等值指数的等值

时间:2014-08-06 19:41:56

标签: jquery arrays

我有两个数组,我想比较某个索引的值。

$("#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

有人有什么想法吗?

2 个答案:

答案 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++;
  }
}
相关问题