0

我有一系列公司名称,例如:

苹果
IBM
微软
复印

我还有一个字符串,我想在列表中找到最近的条目,按字母顺序,在字符串所在的位置之后(它不一定在列表中,尽管它可能是),或者列表中的最后一个条目如果字符串按字母顺序大于最后一个条目。

'AAA' 将返回 'Apple'
'IBM' 将返回 'IBM'
“英特尔”将返回“微软”
'ZZZ' 将返回 'Xerox'

感谢您的任何建议!

4

1 回答 1

0

这似乎有效,项目必须大于前一个项目/未定义且小于或等于当前项目,否则排序数组中的最后一个项目

var arr = ['Apple', 'IBM', 'Microsoft', 'Xerox'].sort();
var match = (str) => arr.find((item, index) => {
    return (
        str.toLowerCase() > (arr[index - 1] || '').toLowerCase() &&
        str.toLowerCase() <= item.toLowerCase()
    );
}) || arr[arr.length - 1];

console.log(match('AAA')); // "Apple"
console.log(match('IBM')); // "IBM"
console.log(match('Intel')); // "Microsoft"
console.log(match('ZZZ')); // "Xerox"
于 2020-10-29T18:35:40.600 回答