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)
这是否回答了您的问题?谢谢,作为参考,不完全是我要找的。