Javascript 查找两个数组之间的数据值已更改的索引位置
我有两个数组Javascript 查找两个数组之间的数据值已更改的索引位置,javascript,angular,Javascript,Angular,我有两个数组 initial:["David","Brad"] after:["David","Cristina"] 因此,在上述两个数组之间,位置2处的值已更改,因此我如何简单地返回更改的索引位置: 期望结果:[2] 如果两个值都发生变化,则预期结果为[1,2] 我在下面试过 var res= a.after.filter( function( p, index) { retur
initial:["David","Brad"]
after:["David","Cristina"]
因此,在上述两个数组之间,位置2处的值已更改,因此我如何简单地返回更改的索引位置:
期望结果:[2]
如果两个值都发生变化,则预期结果为[1,2]
我在下面试过
var res= a.after.filter( function( p, index) {
return Object.keys(p).some( function( prop ) {
return p[prop] !== a.initial[index][prop];
})
})
上面的代码将输出返回为[“Cristina”],这是after数组中更改的值
如何调整它以获得索引位置而不是值。两个数组的大小是否总是相同的?数组的元素可以是对象吗?因为您正在比较对象键 从你的例子来看,如果没有更多关于这个问题的定义,我认为你可以做到这一点
var res = a.after.reduce( (acc, item, index) => {
if(index >= a.initial.length || item !== a.initial[index]){
acc.push(index+1);
}
return acc;
}, []);
只要数组的元素是字符串/数字,并且数组的长度相同,下面的代码就可以完成这项工作 请核实
initial=[“大卫”、“布拉德”];
之后=[“大卫”、“克里斯蒂娜”];
arr=[];
这个.initial.map((i,v)=>{
如果(i!==this.after[v]){
本协议推送(v+1)
}
});
console.log(this.arr)
这是否回答了您的问题?谢谢,作为参考,不完全是我要找的。