javascript循环字符串比较头痛

时间:2016-07-02 03:39:20

标签: javascript

        console.log(previousCompetitors);
        console.log(competitors);
        if(data.isVisible) {
            var moveIndexTo = [];
            for(var q=0; q<competitors.length;q++) {
                moveIndexTo.push(-1);
            }
            for(var i = 0; i<competitors.length; i++) {
                for(var j = 0; j<previousCompetitors.length; j++) {
                    console.log(competitors[i].name);
                    console.log(previousCompetitors[j].name);
                    if(competitors[i].name === previousCompetitors[j].name) {
                        moveIndexTo[j]= i;
                        break;
                    }
                }
            }
            console.log(moveIndexTo);
        }

我正在慢慢疯狂地想弄清楚这里发生了什么。我有一系列竞争对手数据按顺序更新。它们都是数组,我想跟踪先前排序的变化。

我console.log数据并且可以看到数据顺序已经改变但是每次moveIndexTo数组最终都是[0,1,2,3,4,5]暗示先前的竞争对手是竞争对手有相同的顺序。如何在我调试时将它们更改为在代码块顶部将它们记录到执行字符串比较时?

竞争对手和之前的竞争对手大致采用

形式

[{名称:&#39; NAME1&#39;},{名称:&#39; NAME2&#39;},{名称:&#39; NAME3&#39;},{名称:&#39; name4&#39;},{name:&#39; name5&#39;},{name:&#39; name6&#39;}]

每个对象都要进行更多操作。所以,如果那是以前的竞争对手,那么竞争对手就像是

[{名称:&#39; name6&#39;},{名称:&#39; NAME2&#39;},{名称:&#39; NAME3&#39;},{名称:&#39; NAME4&#39;},{名称:&#39; NAME5&#39;},{名称:&#39; NAME1&#39;}]。

注意name1和name6的切换。所以我希望moveIndexTo为[5,1,2,3,4,0]。

1 个答案:

答案 0 :(得分:1)

试试这个:moveIndexTo[i] = j; 小提琴:https://jsfiddle.net/c9mbbpjj/