对象的数组,push后移除数组,保留对象



我试图将我的对象数组推入变量,但所有我收到的是数组中的数组,或单个对象。

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

相关内容

  • 没有找到相关文章

最新更新