数组和javascript-如何比较两个数组

数组和javascript-如何比较两个数组,javascript,arrays,Javascript,Arrays,在比较两个数组时,是否有方法获取更改的值 我会更好地解释的 假设我有 arr1 = [1,2,3] arr2 = [1,2,3] arr2动态创建,默认值与arr1 当我将arr2更改为arr2=[0,2,3]时,如何检测更改的值?(在本例中,1更改为0)?这是一个简单的代码段,您可以这样使用: 1) 首先用ArrayObserver 2) 然后简单地使用update方法来分配新的数组值 3) 跟踪onUpdated回调中的新元素 4) 在aObserver.array 让我知道代码是否对您有

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

我会更好地解释的

假设我有

arr1 = [1,2,3]
arr2 = [1,2,3]
arr2
动态创建,默认值与
arr1


当我将
arr2
更改为
arr2=[0,2,3]
时,如何检测更改的值?(在本例中,1更改为0)?

这是一个简单的代码段,您可以这样使用:

1) 首先用
ArrayObserver

2) 然后简单地使用
update
方法来分配新的数组值

3) 跟踪
onUpdated
回调中的新元素

4) 在
aObserver.array

让我知道代码是否对您有意义,以及我们是否需要更改某些内容

var数组=[10,15];
var aObserver=新的ArrayObserver(数组);
aObserver.onUpdate(函数(新值、旧数组){
log('新值为:');
console.log(newValues);
});
/*使用更新方法分配数组的新值*/
aObserver.update([10,12]);
aObserver.update([15,12]);
log('数组值为');
log(aObserver.array);
/*
保存数组并通过更新数组时的简单类
该类将在onUpdate方法的回调中为您提供新值
*/
函数ArrayObserver(数组){
var=这个;
var callback=null;
数组=数组;
that.update=函数(newArray){
var newValues=[];
/*获取旧数组的副本*/
var oldValues=that.array.slice();
对于(var i=0;i}
这是一个简单的代码片段,您可以这样使用:

1) 首先用
ArrayObserver

2) 然后简单地使用
update
方法来分配新的数组值

3) 跟踪
onUpdated
回调中的新元素

4) 在
aObserver.array

让我知道代码是否对您有意义,以及我们是否需要更改某些内容

var数组=[10,15];
var aObserver=新的ArrayObserver(数组);
aObserver.onUpdate(函数(新值、旧数组){
log('新值为:');
console.log(newValues);
});
/*使用更新方法分配数组的新值*/
aObserver.update([10,12]);
aObserver.update([15,12]);
log('数组值为');
log(aObserver.array);
/*
保存数组并通过更新数组时的简单类
该类将在onUpdate方法的回调中为您提供新值
*/
函数ArrayObserver(数组){
var=这个;
var callback=null;
数组=数组;
that.update=函数(newArray){
var newValues=[];
/*获取旧数组的副本*/
var oldValues=that.array.slice();
对于(var i=0;i}
如果您只想知道索引中的哪个值发生了更改,以及更改的值是什么,可以使用Array#reduce创建一个更改数组

var arr1=[1,2,3];
var arr2=[0,2,3];
已更改的功能(arr1、arr2){
返回arr2.reduce(函数(d,v,i){
v!==arr1[i]&d.push({
索引:i,,
发件人:arr1[i],
致:v
});
返回d;
}, []);
}
var diff=发生了什么变化(arr1,arr2);

控制台日志(diff)如果您只想知道索引中的哪个值发生了更改,以及更改的值是什么,可以使用Array#reduce创建一个更改数组

var arr1=[1,2,3];
var arr2=[0,2,3];
已更改的功能(arr1、arr2){
返回arr2.reduce(函数(d,v,i){
v!==arr1[i]&d.push({
索引:i,,
发件人:arr1[i],
致:v
});
返回d;
}, []);
}
var diff=发生了什么变化(arr1,arr2);

控制台日志(diff)我正在尝试调整它以适应我的特殊情况,感谢现在,我会让你知道这是否有效是的,如果需要任何更改,我可以帮助你。我希望得到这个想法:)是的,我只需要调整它,因为我正在以一种不同的方式处理更新,使用这个类不会真正起作用,因为它已经使用承诺来处理更新和类似的东西,但是我得到了这个想法,如果我卡住了,我会让你知道,再次感谢:)我正在尝试调整它以适应我的特殊情况,谢谢现在,我会让你知道这是否有效是的,如果需要任何更改,我可以帮助你。我希望得到这个想法:)是的,我只是需要调整它,因为我正在以不同的方式处理更新,使用这个类不会真正起作用,因为它已经使用承诺来处理更新和类似的东西,但是我得到了这个想法,如果我卡住了,我会让你知道,再次感谢:)谢谢,它完全按照我的需要工作。再次感谢汉克斯,它完全按照我的需要工作。再次感谢