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)
- 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)