Javascript 使用push()将两个数组合并为一个

Javascript 使用push()将两个数组合并为一个,javascript,jquery,object,push,Javascript,Jquery,Object,Push,我有以下代码: list1 = { Items: [ { ID: 1, Name: "Zurich" }, { ID: 2, Name: "London" }, { ID: 3, Name: "New York" } ] }; list

我有以下代码:

list1 = {
    Items: [
        {
            ID: 1,
            Name: "Zurich"
        },
        {
            ID: 2,
            Name: "London"
        },            {
            ID: 3,
            Name: "New York"
        }
    ]
};

list2 = {
    Items: [
        {
            ID: -1,
            Name: "Dummy"
        },
        {
            ID: 0,
            Name: "Dummy2"
        }
    ]
};

list1.push(list2);
我预期结果如下:

清单1:

  • 0:对象(苏黎世)
  • 1:对象(伦敦)
  • 3:对象(纽约)
  • 4:对象(虚拟)
  • 5:对象(Dummy2)
但我得到了这个:

清单1:

  • 0:对象(苏黎世)
  • 1:对象(伦敦)
  • 2:对象(纽约)
  • 3:对象(项目)
    • 0:对象(虚拟)
    • 1:对象(Dummy2)
我怎样才能得到预期的结果


谢谢大家,干杯。

问题是如何使用push()而不是concat()实现这一点:

for(var i=0;i
问题是如何使用push()而不是concat()实现这一点:

for(var i=0;i
除此之外,您可以使用
数组#推送。对其应用

var list1={Items:[{ID:1,名称:“苏黎世”},{ID:2,名称:“伦敦”},{ID:3,名称:“纽约”}]},
列表2={Items:[{ID:-1,名称:“Dummy”},{ID:0,名称:“Dummy2”}]};
[].push.apply(列表1.Items,列表2.Items);
console.log(列表1)除此之外,您可以使用
Array#push.apply

var list1={Items:[{ID:1,名称:“苏黎世”},{ID:2,名称:“伦敦”},{ID:3,名称:“纽约”}]},
列表2={Items:[{ID:-1,名称:“Dummy”},{ID:0,名称:“Dummy2”}]};
[].push.apply(列表1.Items,列表2.Items);
console.log(列表1)
list1={
项目:[
{
ID:1,
名称:“苏黎世”
},
{
ID:2,
姓名:“伦敦”
},            {
ID:3,
姓名:“纽约”
}
]
};
清单2={
项目:[
{
ID:-1,
名称:“假人”
},
{
ID:0,
名称:“Dummy2”
}
]
};
list1.Items=list1.Items.concat(list2.Items);
console.log(列表1)
list1={
项目:[
{
ID:1,
名称:“苏黎世”
},
{
ID:2,
姓名:“伦敦”
},            {
ID:3,
姓名:“纽约”
}
]
};
清单2={
项目:[
{
ID:-1,
名称:“假人”
},
{
ID:0,
名称:“Dummy2”
}
]
};
list1.Items=list1.Items.concat(list2.Items);
console.log(列表1)尝试:

list2.items.forEach(function (item) {
  list1.items.push(item)
})
尝试:

list2.items.forEach(function (item) {
  list1.items.push(item)
})

您需要循环查看
list2
中的每个
项目
,然后获取它们以推入
list1
。。下面是使用
$的代码段。每个

var列表1={
项目:[
{
ID:1,
名称:“苏黎世”
},
{
ID:2,
姓名:“伦敦”
},            {
ID:3,
姓名:“纽约”
}
]
};
变量列表2={
项目:[
{
ID:-1,
名称:“假人”
},
{
ID:0,
名称:“Dummy2”
}
]
};
$(列表2.Items)。每个(函数(k,v){
列表1.项目推送(v);
})
console.log(列表1)

您需要循环查看
列表2中的每个
项目
,然后取出它们以推入
列表1
。。下面是使用
$的代码段。每个

var列表1={
项目:[
{
ID:1,
名称:“苏黎世”
},
{
ID:2,
姓名:“伦敦”
},            {
ID:3,
姓名:“纽约”
}
]
};
变量列表2={
项目:[
{
ID:-1,
名称:“假人”
},
{
ID:0,
名称:“Dummy2”
}
]
};
$(列表2.Items)。每个(函数(k,v){
列表1.项目推送(v);
})
console.log(列表1)
使用:

Spread是ES2015的一项功能。您的目标浏览器或运行时可能还不支持它,因此请检查(或使用类似transpiler的工具)。

使用:


Spread是ES2015的一项功能。您的目标浏览器或运行时可能还不支持它,因此请检查(或使用类似transpiler的工具)。

您好,谢谢,这很有效。申请怎么样?我的意思是:列表1。推。应用(列表2)?我听说了一些,但我不知道它是如何运作的。。。你知道这个吗?干杯和谢谢。嗨,我有以下错误:无法读取未定义的属性“apply”?请删除您答案中的concat解决方案,我用push/push,apply搜索了一个。。谢谢谢啦谢谢,这很有效。申请怎么样?我的意思是:列表1。推。应用(列表2)?我听说了一些,但我不知道它是如何运作的。。。你知道这个吗?干杯和谢谢。嗨,我有以下错误:无法读取未定义的属性“apply”?请删除您答案中的concat解决方案,我用push/push,apply搜索了一个。。感谢您提供的代码
list1.push(list2)将失败并出现类型错误。为什么你期望
4:Object(Items)
而不是
4:Object(Dummy)
?@斜视是一种打字错误。。。我没有收到错误,它会打印我的第二个结果,以防我的预期结果。但是使用concat它可以工作。
list1
没有
.push()
方法,因此您必须执行其他操作。
.push()
.concat()
方法非常不同。一个变异,另一个替换。在某些情况下,这可能是一个重要的区别。至于您关于
.apply()
的问题,您需要将
list1.Items
设置为
.push()
的“This”值,以便您可以将
list2.Items
的成员作为单个参数传递。您可以这样做:
Array.prototype.push.apply(list1.Items,list2.Items)
或此
list1.Items.push.apply(list1.Items,list2.Items)
。这些有效地使调用像您那样结束:
list1.Items.push
list1.Items.push(...list2.Items)