我试图将我的对象数组推入变量,但所有我收到的是数组中的数组,或单个对象。
myObject = {
id: id,
items: [],
boolean: true,
}
myArray = [{1}, {2}, {3}]
我尝试了myObject.items.push(myArray[0])
,但这只返回第一个对象。
我想要的是
myObject = {
id: id,
items: [{1}, {2}, {3}],
boolean: true,
}
你要做的就是像这样将整个数组设置为新值:
myObject.items = myArray
如果你想采用不可变的方法,那么你可以像这样复制它:
myObject.items = [...myArray]
编辑:
如果你想添加项目(而不仅仅是完全覆盖)到myObject.items
,那么你应该这样做:
myObject.items = [...myObject.items, ...myArray]
这将把你的新数组项目添加到当前项目数组的末尾,你也可以这样做,将它们添加到开始:
myObject.items = [...myArray, ...myObject.items]
你可以使用
myObject.items.push(...myArray)
正如Andreas评论的那样,另一个解决方案是使用concat。Concat类似于push
。但是它实际上并没有改变数组它返回一个新的数组
const x = []
console.log(x.concat(3)) // prints [3]
console.log(x) // prints []
这种行为通常是需要的,因为它可以防止"副作用"。发生
它也不只是在数组中添加元素,它只在元素不是数组时才这样做。如果它是一个数组,它将合并两个数组
const x = [1,2,3]
console.log(x.concat([4,5,6]) // prints [1,2,3,4,5,6]
这里的解是
myObject.items = myObject.items.concat(myArray)
//object
myObject={
id:1,
items:[],
boolean: true
}
//concat
myArray = [ 1,2,3];
myObject.items += myArray;
console.log(myObject.items);