[英]Insert a new object in Array of object
我有一个数组列表。
dataList = []
我想在数组中插入对象,所以我尝试了这个,
dataList.concat([{"name":"BOB", "value":"1"}])
// [{"name":"BOB", "value":"1"}]
但是当我在同一数组中插入第二个对象时。
dataList.concat([{"name":"Joe", "value":"2"}])
// [{"name":"Joe", "value":"2"},{"name":"Joe", "value":"2"}]
插入第二个数组后,它也会替换第一个对象。 我在哪里错?,请帮忙。
只需使用push
功能
var dataList = []; dataList.push({ "name": "BOB", "value": "1" }); //Pushing second object dataList.push({ "name": "Joe", "value": "2" }) console.log(dataList)
要将值推入数组中,必须使用array.push
。 array.concat
不添加新项目。 它合并2数组并返回第三个数组。 所以你的代码:
dataList.concat([{"name":"BOB", "value":"1"}])
什么都不做。
var dataList = [] dataList.concat([{"name":"BOB", "value":"1"}]) console.log(dataList)
根据行为,您的代码应如下所示:
var dataList = [] var obj = [{"name":"BOB", "value":"1"}]; dataList = dataList.concat(obj) obj[0].value = 2; dataList = dataList.concat(obj) console.log(dataList)
两个对象都受到影响的原因是,使用引用复制/分配了对象。 因此,变量将保存一个内存位置,对该变量的任何更改都将反映到该位置。 因此,如果拥有此引用的变量多于1个,它也会被更新。
那么,您应该如何实现呢?
var dataList = [] var obj = {"name":"BOB", "value":"1"}; dataList = dataList.concat(obj) var obj2 = Object.assign({}, obj) obj2.value = 2; dataList = dataList.concat(obj2) console.log(dataList)
但是仍然使用Array.concat是错误的。 它不打算像这样使用。
var dataList = [] var obj = {"name":"BOB", "value":"1"}; dataList.push(obj) var obj2 = Object.assign({}, obj) obj2.value = 2; dataList.push(obj2) console.log(dataList)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.