如何在嵌套数组对象中删除和添加项目

时间:2020-09-28 20:33:53

标签: javascript arrays

我有嵌套的数组对象,其中包含项。我想从第一项id:4中删除该项,然后添加id:5对象。

const data = [
  {
    id: 1,
    items: [ { id:11 }, {id:12 } ],
  },
  {
    id: 2,
    items: [ { id:21 } ],
  },
  {
    id: 3,
    items: [ { id:31 } ],
  },
  {
    id: 4,
    items: [ { id:41 }, {id:42 } ],
  },
  {
    id: 5,
    items: [ { id:51 } ],
  },
]

所以我得到的数组应该是这样的

 const data = [
  {
    id: 1,
    items: [ { id:11 }, {id:12 } ],
  },
  {
    id: 2,
    items: [ { id:21 } ],
  },
  {
    id: 3,
    items: [ { id:31 } ],
  },
  {
    id: 4,
    items: [ { id:41 } ],
  },
  {
    id: 5,
    items: [ {id:42 }, { id:51 } ],
  },
]

3 个答案:

答案 0 :(得分:1)

我将分两个步骤进行操作,首先获取ID为4的项目中除第一个项目外的所有项目:

let moreItems = [];

data.forEach((item) => {
    if (item.id === 4) {
       
       while(item.items.length > 1) {
        moreItems.push(item.items[item.items.length-1]);
        item.items.pop();
       }
    }
});

moreItems将是要添加到ID为5的项中的项的数组。


data.forEach((item) => {
    if (item.id === 5) {
        if (moreItems.length > 0) {
            item.items = item.items.concat(moreItems);
        }
    }
});

答案 1 :(得分:0)

也许是这样吗?

let v = data[3].items.pop()
data[4].items.push(v)

问题不是最清楚的。如果您需要根据某些条件或逻辑来执行此操作,则必须自己执行操作。

答案 2 :(得分:-1)

如果您需要从id = 4复制所有项目,请使用以下代码: data[4].items.push(data[3].items.splice(1,data[3].items.length));