我有两个数组,我想比较某个索引的值。
$("#sortable").sortable().bind('sortupdate', function() {
var id = $( "#sortable" ).sortable( "toArray" );
console.log(id);
var compare = id.sort(function(a,b){return a - b});
console.log(compare);
var completion = 0;
for (i = 0; i < 10 ; i++) {
completion += (id[i] == compare[i]);
}
console.log(completion)
});
});
当我检查控制台时,无论如何我被告知10是相同的。这是控制台返回的内容。我首先是id数组,第二个是compare数组,第三个是完成变量。我希望完成变量在这种情况下返回0。
["19", "26", "3", "27", "25", "8", "42", "11", "24", "37"] (index):66
["3", "8", "11", "19", "24", "25", "26", "27", "37", "42"] (index):68
10
有人有什么想法吗?
答案 0 :(得分:3)
您正在运行嵌套循环。对于i
循环的每次迭代,您将执行j
循环的所有10次迭代。所以你在id
数组中测试每个值对compare
数组的每个值 - 100次比较。
如果你想比较位置和位置,你只需要一个循环:
for (i = 0; i < 10 ; i++) {
count += (id[i] == compare[i]);
}
答案 1 :(得分:1)
您只需要一个循环来比较同一索引处的两个数组:
for (var ii = 0; ii < ii.length; ii++) {
if (id[ii] == compare[ii]) {
completion++;
}
}
这假设它们的数组长度相同。如果它们的长度不同,则只能比较最短阵列的长度:
var shortestLength = (id.length < compare.length) ? id.length : compare.length;
for (var ii = 0; ii < shortestLength; ii++) {
if (id[ii] == compare[ii]) {
completion++;
}
}