javascript - 从数组中删除数组中的对象
问题描述
我想用 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',
},
],
},
]
解决方案
您可以使用.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') );
推荐阅读
- java - 在 IntelliJ 上运行 JavaFx 13 时出错(是的,我完全按照教程进行操作)
- c# - 如何在 OracleCommand INSERT INTO 之后检索 sys_guid() 的值
- reactjs - TypeError:无法读取未定义的反应蚂蚁设计表的属性“地图”
- android - 我在 android studio 中遇到数据绑定问题
- python - 上下采样两步操作的考虑
- php - 使用触发器记录用户会话活动
- c# - 仅在填写表单上的必填字段时触发 OnServerClick
- php - 如何按 MYSQL 中的总字数对数据 ASC 进行排序
- java - 获取方法的结果并将其保存到变量中
- unix - 如何使用ansible将输入传递给交互式命令?