Javascript循环字符串比较头痛

javascript loop string comparison headache

本文关键字:比较 字符串 循环 Javascript      更新时间:2023-09-26
        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],这意味着先前的竞争者和竞争者具有相同的顺序。当我在代码块的顶部console.log它们到执行字符串比较时,它们如何改变?

竞争者和以前的竞争者大致采用

的形式

[{名称:"name1"},{名称:"name2"},{名称:"name3"},{名称:"name4"},{名称:"name5"},{名称:"name6"}]

,在每个对象中有更多的内容。如果这是previousCompetitors那么竞争者就应该是

[{名称:"name6"},{名称:"name2"},{名称:"name3"},{名称:"name4"},{名称:"name5"},{名称:' name1 '})。

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

试试这个:moveIndexTo[i] = j;浏览:https://jsfiddle.net/c9mbbpjj/