簡體   English   中英

如何將 object 推入嵌套在對象數組中的數組中?

[英]How to push an object into an array nested in an array of objects?

所以我有這個

let arr = [{
 category_set_id: 25,
 name: "25name",
 el: [
   {name: "25name1", value: "25value1"}
 ]
},
{
 category_set_id: 44,
 name: "44name",
 el: [
   {name: "44name1", value: "44value1"}
 ]
},
]

這是我需要推入這個對象的元素

let elToPush = {category_set_id: 44, name: "44name2", value: "44value2"}

如您所見,它屬於 arr 的第二個元素,並且必須以某種方式將其推入 el 屬性,從而導致

let arr = [{
 category_set_id: 25,
 name: "25name",
 el: [
   {name: "25name1", value: "25value1"}
 ]
},
{
 category_set_id: 44,
 name: "44name",
 el: [
   {name: "44name1", value: "44value1"},
   {name: "44name2", value: "44value2"}
 ]
},
]

所以我知道我可以先過濾 arr 以獲得我想要的部分,fe

let toModify = arr.filter(i => i.category_set_id === elToPush.id)

然后我可以

let newarr = [toModify.el, ...elToPush]
toModify.el = newarr

最后我必須以某種方式在全局 arr 中替換它

有人可以幫忙嗎?

您可以使用findIndexarr中查找category_set_id: 44,的索引。 如果arr包含這樣的 object 那么它將返回大於-1的索引。 然后使用這個索引來推送需要的值

 let arr = [{ category_set_id: 25, name: "25name", el: [{ name: "25name1", value: "25value1" }] }, { category_set_id: 44, name: "44name", el: [{ name: "44name1", value: "44value1" }] } ]; let elToPush = { category_set_id: 44, name: "44name2", value: "44value2" }; const getIndex = arr.findIndex(item => item.category_set_id === elToPush.category_set_id); if (getIndex > -1) { arr[getIndex].el.push({ name: "44name2", value: "44value2" }) }; console.log(arr)

或者,您也可以使用find如果category_set_id匹配,它將返回 object

 let arr = [{ category_set_id: 25, name: "25name", el: [{ name: "25name1", value: "25value1" }] }, { category_set_id: 44, name: "44name", el: [{ name: "44name1", value: "44value1" }] } ]; let elToPush = { category_set_id: 44, name: "44name2", value: "44value2" }; const obj = arr.find(item => item.category_set_id === elToPush.category_set_id); obj && obj.el.push({ name: elToPush.name, value: elToPush.value }) console.log(arr)

所以首先我們要找到正確的 object 來插入我們的新元素,然后用正確的字段改變內部數組

updateArray(newObject) {
  const elemToChange = arr.find(object => object.category_set_id == newObject.category_set_id)
  const objectToPush = { name: newObject.name, value: newObject.value }
  elemToChange.el.push(objectToPush)
}

您可以使用 find 來獲得對搜索到的 object 的引用,然后您可以將元素插入(推入)到找到的 object 的 el 數組中。

 let arr = [{ category_set_id: 25, name: "25name", el: [{ name: "25name1", value: "25value1" }] }, { category_set_id: 44, name: "44name", el: [{ name: "44name1", value: "44value1" }] } ]; let elToPush = { category_set_id: 44, name: "44name2", value: "44value2" }; const obj = arr.find(item => item.category_set_id === elToPush.category_set_id); if (obj) { obj.el.push({ name: "44name2", value: "44value2" }) }; console.log(arr)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM