gpt4 book ai didi

javascript - 根据数组过滤字符串数组

转载 作者:行者123 更新时间:2023-11-29 16:08:57 25 4
gpt4 key购买 nike

我有一个这样的字符串数组

values[0]='1,3,16,5,12,43,13';
values[1]='7,1,3,16,5,23,49,26,13';
values[2]='13,1,3,16,5,23,49,26,12';
// etc.

另一方面,我有一个数组

filter[0]='13';
filter[1]='12';
filter[2]='3';`

我想找到所有值的实例,其中我的所有过滤项都包含在字符串中(在这种情况下 values[0]values[2] 会匹配,values[1] 不会因为缺少 12)。我已经尝试了几个小时,我想这真的很简单,但我似乎找不到解决方案。

如果有帮助,jQuery 是一个选项。

最佳答案

您可以使用 filter() every() 这样做

var values = ['1,3,16,5,12,43,13', '7,1,3,16,5,23,49,26,13', '13,1,3,16,5,23,49,26,12'],
filter = [13, 12, 3];

var res = values.filter(function(v) { // filter array
return filter.every(function(fil) { // checking all elements are in the string
return v.indexOf(fil) > -1;
});
})

document.write('<pre>' + JSON.stringify(res, null, 3) + '</pre>');


更新:

使用 indexOf() 有几率失败 。例如:如果字符串包含 166 将匹配。所以我们可以使用 regexObj.test(str) match() 使用单词边界正则表达式以获得更高的精度。

var values = ['1,3,16,5,12,43,13', '7,1,3,16,5,23,49,26,13', '13,1,3,16,5,23,49,26,12'],
filter = [13, 12, 3];

var res = values.filter(function(v) { // filter array
return filter.every(function(fil) { // checking all elements are in the string
return new RegExp('\\b' + fil + '\\b').test(v);
// or return v.match(new RegExp('\\b' + fil + '\\b'));
});
})

document.write('<pre>' + JSON.stringify(res, null, 3) + '</pre>');

关于javascript - 根据数组过滤字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33968218/

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