Fli*_*per 2 javascript arrays jquery
我试图通过找出移动了哪个元素来找到两个数组之间的差异.我知道一个元素将被移动,并且将为列表的其余部分维护订单,但我无法弄清楚如何找到它.
例:
答:1 2 3 4 5 6
B:2 3 4 5 1 6
两个列表中都存在所有元素,但是如何找出元素1从索引0移动到索引4?
我采取但不起作用的基本方法是:
//Original array
var a = [1, 2, 3, 4, 5, 6];
//New array
var b = [2, 3, 4, 5, 1, 6];
for(var i=0; i < a.length; i++) {
if(a[i] != b[i] && a[i+1] != b[i]) {
console.log(b[i] + " moved");
}
}
Run Code Online (Sandbox Code Playgroud)
我已经修改了代码来打印出b [i]而不是[i],但它并不适用于所有情况,例如:
答:1,2,3,4
B:1,4,2,3
问题在于你的if陈述中的第二个条件.在您的示例中,当元素a[0]移动时a[0+1] === b[0],因此if子句的计算结果为false.
试试吧,
var idx = 0;
var len = a.length;
while ((a[idx] === b[idx] || a[idx] === b[idx+1]) && idx < len) {
idx++;
}
console.log('Element a[' + idx + ']=' + a[idx] + ' moved.');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |