javascript循环字符串比较 console.log(以前的竞争对手); 控制台日志(竞争对手); if(data.isVisible){ var moveIndexTo=[]; 对于(var q=0;q

javascript循环字符串比较 console.log(以前的竞争对手); 控制台日志(竞争对手); if(data.isVisible){ var moveIndexTo=[]; 对于(var q=0;q,javascript,Javascript,只需试试这个:moveIndexTo[i]=j; 拨弄:试试这个:moveIndexTo[i]=j; 拨弄:您能否请您的问题显示一个示例输入和相应的所需输出(即竞争对手和以前的竞争对手的示例内容,以及之后应该是什么移动索引)?数据非常大且嵌套。但它只是一个对象数组。每个对象都有名称字段以及许多其他字段。我的意图是使用moveIndexTo将i存储在moveToIndex的第j个索引中,以记录以前竞争对手中位于j位置的对象当前在竞争对手中的位置。我将您的示例数据和代码粘贴到了一个FIDLE中,结果

只需试试这个:
moveIndexTo[i]=j;

拨弄:

试试这个:
moveIndexTo[i]=j;


拨弄:

您能否请您的问题显示一个示例输入和相应的所需输出(即
竞争对手
以前的竞争对手
的示例内容,以及之后应该是什么
移动索引
)?数据非常大且嵌套。但它只是一个对象数组。每个对象都有名称字段以及许多其他字段。我的意图是使用moveIndexTo将i存储在moveToIndex的第j个索引中,以记录以前竞争对手中位于j位置的对象当前在竞争对手中的位置。我将您的示例数据和代码粘贴到了一个FIDLE中,结果是
[5,1,2,3,4,0]
,正如您预期的那样:叹气。我不明白。谢谢您的帮助。在上述循环之后,您是否有任何其他代码修改数组?控制台将(取决于浏览器)有一个指向实际对象的实时链接,因此,如果在其他代码更新阵列之前没有在控制台中展开阵列,即使您按顺序记录它们,也会看到最新版本。(您可以通过记录字符串来解决此问题:
console.log(JSON.stringify(竞争对手))
,等等。)请您提出问题,以显示示例输入和相应的所需输出(即
竞争对手
以前的竞争对手
的示例内容,以及之后应该是什么
移动索引
)?数据非常大且嵌套。但它只是一个对象数组。每个对象都有名称字段以及许多其他字段。我的意图是使用moveIndexTo将i存储在moveToIndex的第j个索引中,以记录以前竞争对手中位于j位置的对象当前在竞争对手中的位置。我将您的示例数据和代码粘贴到了一个FIDLE中,结果是
[5,1,2,3,4,0]
,正如您预期的那样:叹气。我不明白。谢谢您的帮助。在上述循环之后,您是否有任何其他代码修改数组?控制台将(取决于浏览器)有一个指向实际对象的实时链接,因此,如果在其他代码更新阵列之前没有在控制台中展开阵列,即使您按顺序记录它们,也会看到最新版本。(您可以通过记录字符串来解决此问题:
console.log(JSON.stringify(竞争对手))
,等等。)为什么会有帮助?实际上,你想要的是在当前竞争对手而不是以前的竞争对手的环境中进行更改。所以移动索引应该如上所述。除了我在你回答之前15分钟发布的小提琴显示OP的代码产生了所需的结果:不,这不会改变任何东西。nnnnnn也证明了它在isolatio中有效n所以它必须是其他的东西,不是简单的打字错误。但是它从for循环之前到嵌套for循环内部的变化是我无法理解的。是的。但另一种方式是,结果会导致数组中有许多未定义的值,而这并不是currentCompetitors长度的真实反映。请考虑两者的长度是否不同。如果您已经oveToIndex与上下文中的currentCompetitors关联,您应该在上下文中推送具有相同数组的数据。为什么会有帮助?实际上,您想要的是在currentCompetitors而不是以前的竞争对手的上下文中进行更改。因此,移动索引应该如上所述。除了我在回答之前15分钟发布的小提琴显示OP的代码生成desired结果是:不,这不会改变任何东西。而且nnnnnn已经证明它是独立工作的,所以它必须是其他一些不是简单的打字错误的东西。但是它如何从for循环之前变为嵌套for循环内部是我无法理解的。是的。但另一种方式,结果将导致数组中许多未定义的值,这不是真的反射currentCompetitors长度的定义。考虑两者的长度是否不同。如果您在上下文中使用currentCompetitors创建了moveToIndex,则应该在上下文中使用相同的数组推送数据。
        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);
        }