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);
}
我慢慢地疯了,试图找出这里发生了什么。我有一系列竞争对手的数据按顺序更新。他们都是数组,我想跟踪上次排序的变化。javascript循环字符串比较头痛
我console.log的数据,可以看到数据的顺序已经改变,但每次moveIndexTo数组最终是[0,1,2,3,4,5]意味着previousCompetitors竞争对手有平等订购。当我console.log他们在代码块的顶部,当我执行字符串比较时,他们之间如何改变?
竞争对手和previousCompetitors采取大致形式
[{名称: 'NAME1'},{名称: 'NAME2'},{名称: 'NAME3'},{名称: 'NAME4'},{名称:'name5'},{name:'name6'}]
在每个对象中都会有更多的事情发生。所以如果这是之前的竞争对手,那么竞争对手就会像
[{name:'name6'},{name:'name2'},{name:'name3'},{name:'name4'},{name : 'NAME5'},{名称: 'NAME1'}]。
请注意name1和name6的开关。所以我期望moveIndexTo是[5,1,2,3,4,0]。
可以请你[编辑]你的问题,以显示样本输入和对应的期望输出(即competitors'的'比如内容和'previousCompetitors',和什么'moveIndexTo'应该在之后)? – nnnnnn
数据非常大并且嵌套。但它只是一个对象数组,每个对象都有名称字段以及其他许多对象。我的意图是使用moveIndexTo通过将i存储在moveToIndex的第j个索引中来记录previousCompetitors中位置j处的对象当前位于竞争对手中的位置。 –
我将你的示例数据和代码粘贴到小提琴中,结果是'[5,1,2,3,4,0]',就像你期望的一样:https://jsfiddle.net/1jxmsewr/ – nnnnnn