比较两个数组时,是否有办法获取更改的值?
我会更好地解释。
假设我有
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);