为什么这个循环循环遍历数组4次?

时间:2015-11-04 08:21:56

标签: javascript arrays loops

我正在测试某些字符的数组,我想知道它为什么循环数组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/

4 个答案:

答案 0 :(得分:1)

您已经在fortestAgainst写了一个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循环中的语句。