javascript - 如何判断数组中哪个元素被移动了?

标签 javascript jquery arrays

我试图通过找出移动了​​哪个元素来找出两个数组之间的差异。我知道一个元素将被准确移动,并且列表其余部分的顺序将保持不变,但我无法弄清楚如何找到它。

示例:

A: 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");
    }
}

我已经通过代码修复了打印 b[i] 而不是 a[i],但它不适用于所有情况,例如:

A: 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.');

关于javascript - 如何判断数组中哪个元素被移动了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22740825/

相关文章:

javascript - 使用 javascript 将 keycode 转换为字符,例如 keyCode 27 转换为 esc

javascript - jQuery的移动多个HTML文件与多个页面

javascript - JQM点击事件委托(delegate): Multiple result for Datepicker with JQM Datebox & SimpleDialog

javascript - 为什么在 javascript 中过滤扩展数组的类的对象调用它的构造函数?

arrays - Swift:通过引用传递修改 UIButtons 数组

javascript - 使用 Javascript DOM 删除 HTML 中的无序列表

javascript - Lodash 的 debounce 功能计时器无法正常工作

javascript - 如果屏幕尺寸改变,如何改变圆圈的大小?

javascript - 为没有在源中指定宽度和高度的图像获取图像尺寸

php - 如何从嵌套数组创建哈希表 (php)