gpt4 book ai didi

javascript - 检查字符串是否包含数组元素的任何部分

转载 作者:行者123 更新时间:2023-11-29 18:21:39 25 4
gpt4 key购买 nike

我刚开始学习 javascript,我正在开发一个小的 chrome 扩展程序,它可以检查某个网站的项目列表中的任何项目包含用户提供的关键字。我正在寻找有关将字符串与字符串数组进行比较的方法的帮助。

所以我有这些变量:

var itemDetails = '[alter] saber 1/8 figure unopened';
var trackingList = ['alter figure', 'magic', 'sword art'];

我需要检查 itemDetails 是否包含 trackingList 中的任何字符串。我知道我可以像这样使用 indexOf():

function checkArray(str, arr){
for(var i=0; i < arr.length; i++){
if(str.indexOf(arr[i]) > -1)
return true;
}
return false;
}

checkArray(itemDetails,trackingList); // returns false

但是,对于其中包含多个单词的字符串,例如“alter figure”,我希望 checkArray() 返回 true,只要字符串中的两个单词都出现在 项目详情。因此 checkArray() 应该在上面的示例中返回 true,因为 'alter' 和 'figure' 都在 itemDetails 中。

我目前使用的方法是拆分trackingList中的每个元素:

function splitTrackList(arr){
var newarr = [];
for(var i = 0; i < arr.length; i++){
newarr[i] = arr[i].split(" ");
}
return newarr;
}

trackList = splitTrackList(trackList);
// [['alter', 'figure'], ['magic'], ['sword', 'art']]

然后使用 indexOf() 进行比较:

function newCheckArray(str, arr){
var passed = true;
for(var i=0; i < arr.length; i++){
for(var j=0; j < arr[i].length; j++){
if(str.indexOf(arr[i][j]) == -1){
passed = false;
break;
}
else passed = true;
}

if(passed) //stop loop if match found
break;
}
return passed;
}

newCheckArray(itemDetails,trackingList); //returns true

我的方法到目前为止有效,但我猜还有一种更快/更有效的方法可以做到这一点。请让我知道你在想什么。先感谢您。

最佳答案

我会做类似的事情

https://jsfiddle.net/denov/FXjXq/3/

var arr = [
"cat dog mouse",
"blue yellow green",
"pizza burrito hamburger"
];

function isInString(needle, haystack) {
return new RegExp('\\b' + needle + '\\b').test(haystack);
}

function checkForStringInArray(stringToFind, arr) {
var inString = false;
for(var i=0; i < arr.length; i++){
inString = isInString(stringToFind, arr[i]);
if(inString) break;
}
return inString;
}

var inString = checkForStringInArray('yellow', arr);

关于javascript - 检查字符串是否包含数组元素的任何部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18051339/

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