我正在测试某些字符的数组,我想知道它为什么循环数组4次。我只想尝试遍历toTest
一次。这是代码和小提琴
var testAgainst = ['and','+',',','&'];
var toTest = ["$ Red Arcane Playing Cards Deck Ellusionist Rare New Sealed $", "Ellusionist Red Arcane Deck - Very Rare - Playing Cards - Magic Tricks- New", "24 HR Sale! Red and White LTD & Red Arcane Playing Cards Ellusionist near mint", "4x Arcane Playing Cards Deck Collection Rare Gold Red + Black White Ellusionist", "Red Arcane Playing Cards by Ellusionist", "24 HR SALE Red Arcane Playing Cards by Ellusionist", "RED ARCANE PLAYING CARDS", "Ellusionist - New/Sealed Red Arcane Playing cards c.2013 - Rare deck"];
for(var i = 0; i < testAgainst.length; i++){
for(var j = 0; j < toTest.length; j++){
if (toTest[j].indexOf(testAgainst[i]) > -1){
console.log('match: ' + toTest[j]);
}else{
console.log('no match ' + toTest[j]);
}
}
}
小提琴:https://jsfiddle.net/bmpgsxb2/4/
为什么它如此循环?
感谢所有指出我正确方向的人。我应该意识到这是正在发生的事情。在玩了一段时间之后我想出了这个,它只过滤数据一次并根据它是否符合标准分割数据
JSFIDDLE更新: https://jsfiddle.net/bmpgsxb2/7/
答案 0 :(得分:1)
您已经在for
和testAgainst
写了一个testAgainst.length === 4
循环,这就是为什么它在toTest
上循环4次
你的算法很好。我没有看到任何其他可能性,可能使用正则表达式,但这取决于你想做什么
答案 1 :(得分:0)
你的循环在另一个循环中运行testAgainst.length
次(即4)。
for(var i = 0; i < testAgainst.length; i++){
for(var j = 0; j < toTest.length; j++){
答案 2 :(得分:0)
你明确地重复testAgainst.length
* toTest.length
次,这是4 * 8次= 32.
答案 3 :(得分:0)
你的算法很好,当你运行外部循环toTest.length和内部循环到testAgainst.length时可以更加优化,这样一旦找到testAgainst关键字,然后找到匹配,不需要迭代更多,也放{{1 if循环中的语句。