gpt4 book ai didi

javascript - 在字符串开头匹配子字符串的最佳方法(有一些限制)

转载 作者:行者123 更新时间:2023-12-01 03:32:25 24 4
gpt4 key购买 nike

我有一个字符串数组:

var myArray = ["blue", "yellow", "purple", "bluegreen", "red"];

并且我需要在给定的另一个字符串的开头匹配这些元素之一。因此,"redwood" 应该匹配 "red",而 "evergreen" 不应该匹配任何内容。它需要是惰性匹配,因此 "bluegreenskygrass" 应该匹配 "bluegreen",而不是 "blue"

我当然可以通过针对字符串中的每个字符迭代数组中的每个元素来实现此目的,但这似乎在计算上相当昂贵。我确信有更好的方法,但我似乎无法弄清楚。

最佳答案

您可以使用Array#reduce,使用Array#startsWith查找匹配项,并获取最长的匹配项:

var myArray = ["blue", "yellow", "purple", "bluegreen", "red"];

function findMatch(search) {
return myArray.reduce(function(r, str) {
return search.startsWith(str) && str > r ? str : r;
}, '');
}

var result = findMatch('bluegreenskygrass');

console.log(result);

如果您有一个固定数组,并进行多次搜索,则可以首先按长度对数组进行排序(降序),然后使用 Array#find。一旦找到匹配项,搜索就会停止。

var myArray = ["blue", "yellow", "purple", "bluegreen", "red"];

myArray.sort(function(a, b) {
return b.length - a.length;
});

function findMatch(search) {
return myArray.find(function(str) {
return search.startsWith(str);
});
}

var result = findMatch('bluegreenskygrass');

console.log(result);

关于javascript - 在字符串开头匹配子字符串的最佳方法(有一些限制),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44471154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com