Javascript 使用键作为条件合并数组数据

Javascript 使用键作为条件合并数组数据,javascript,jquery,arrays,google-apps-script,Javascript,Jquery,Arrays,Google Apps Script,编辑: 我试图将arr1合并到arr2中,但当keyid值相同时除外 这应该是输出: var arr1 = [{id=1}, {id=3] var arr2 = [{id=1, text=1}, {id=2, text=2}, {id=4, text=4}] 为此,我尝试使用if arr1.indexOf(arr2)!=0在arr3中推送值;但是不起作用 var arr3 = [{id=1, text=1}, {id=2, text=2}, {id=3, text=3}, {id=4, tex

编辑:

我试图将arr1合并到arr2中,但当keyid值相同时除外

这应该是输出:

var arr1 = [{id=1}, {id=3]
var arr2 = [{id=1, text=1}, {id=2, text=2}, {id=4, text=4}]
为此,我尝试使用
if arr1.indexOf(arr2)!=0
在arr3中推送值;但是不起作用

var arr3 = [{id=1, text=1}, {id=2, text=2}, {id=3, text=3}, {id=4, text=4}]
var arr1=[{id=1,text=1},{id=3,text=3}]
var arr2=[{id=1,text=1},{id=2,text=2},{id=4,text=4}]
var arr3=[];
对于(变量i=0;i
有什么帮助吗?

修改点:
  • 在脚本中,
    arr1.indexOf(arr2[i].id)
    始终是
    -1
    。因为
    arr1
    的每个元素都是一个对象。在这种情况下,
    indexOf
    不能直接使用。因此,在这种情况下,
    arr2
    被复制到
    arr3
    。并且,不使用
    arr1
    的值。我认为这可能是你的问题的原因
  • 在你的问题中,你说你想要
    var arr3=[{id=1,text=1},{id=2,text=2},{id=3,text=3},{id=4,text=4}]
    。但是在您的脚本中,键似乎从
    text
    更改为
    stars
    ,就像
    stars:arr2[i]。text
当上述各点反映到脚本中时,它将变成如下所示

修改脚本1: 在此修改的脚本中,
arr2
的值合并到
arr1

var arr1=[{id:1,text:1},{id:3,text:3}];
var arr2=[{id:1,text:1},{id:2,text:2},{id:4,text:4}];
对于(变量i=0;iid==arr2[i].id)){
arr1.push({id:arr2[i].id,text:arr2[i].text});
}
}
arr1.sort((a,b)=>a.id>b.id?1:-1);

console.log(arr1)
在您的脚本中,
stars的
stars:arr2[i]。text
text
?可能重复,我会在这里寻找您问题的答案:这也是无效的JS:
var arr1=[{id=1},{id=3]
->
var arr1=[{id:1},{id:3}
var arr1 = [{id=1, text=1}, {id=3, text=3}]
var arr2 = [{id=1, text=1}, {id=2, text=2}, {id=4, text=4}]

var arr3 = [];

    for (var i = 0; i < arr2.length; i++) {

            if (arr1.indexOf(arr2[i].id) !== 0) {
                arr3.push({
                  id: arr2[i].id, 
                  stars: arr2[i].text 
                  });
            }
        }