首页 > 解决方案 > 从数组中删除数组中的对象

问题描述

我想用 0 id 删除列表中 cardItems 的 1 id 并保持列表的顺序。什么是最好的方法?

   lists: [
        {
          id: '0',
          title: 'LIST 1',
          cardItems: [
            {
              id: '0',
              text: 'Card 1',
            },
            {
              id: '1',
              text: 'Card 2',
            },
            {
              id: '2',
              text: 'Card 3',
            },
          ],
        },
    ]

标签: javascriptecmascript-6

解决方案


您可以使用.find通过 id 获取列表项,然后使用删除卡项.filter

const lists = [
  {
    id: '0',
    title: 'LIST 1',
    cardItems: [
      { id: '0', text: 'Card 1' },
      { id: '1', text: 'Card 2' },
      { id: '2', text: 'Card 3' },
    ],
  },
];

const removeCardItem = (list, listItemId, cardItemId) => {
  const arr = [...list];
  // get list item by id
  const item = arr.find(listItem => listItem.id === listItemId);
  // remove card item by id if found
  if(item)
    item.cardItems = item.cardItems.filter(cardItem =>
      cardItem.id !== cardItemId
    );
  return arr;
}

console.log( removeCardItem(lists, '0', '1') );


推荐阅读