比较两个数组时,是否有办法获取更改的值?

我会更好地解释。

假设我有

arr1 = [1,2,3]
arr2 = [1,2,3]


arr2是动态创建的,默认值与arr1相同

arr2更改为arr2 = [0,2,3]时,如何检测更改的值? (在这种情况下,将1更改为0)?

最佳答案

如果只想知道哪个索引更改了哪个值,什么是更改的值,可以使用Array#reduce创建一个更改数组。



var arr1 = [1, 2, 3];
var arr2 = [0, 2, 3];

function whatChanged(arr1, arr2) {
  return arr2.reduce(function(d, v, i) {
    v !== arr1[i] && d.push({
      index: i,
      from: arr1[i],
      to: v
    });

    return d;
  }, []);
}

var diff = whatChanged(arr1, arr2);

  console.log(diff);

10-06 13:45
查看更多