javascript - 使用 .filter 从带有 react/javascript 的对象数组中删除一个项目
问题描述
我正在使用 javascript 的 .filter 函数通过它在 TypeMp3List 中的 ID 从这个对象数组中删除一个元素。格式是这样的:
在删除例如 MP3 时,我想要在执行过滤器后得到的格式ID:33390
是这样的:
这是我到目前为止构建的代码:
showDeleteConfirmation(value, id, index, thisHandler) {
confirm({
title: 'Voulez vous supprimer cette audio ?',
content: '',
okText: 'Oui, je confirme',
okType: 'danger',
cancelText: 'Non',
onOk() {
deleteMp3Request(id);
var { extraitMP3 } = thisHandler.state;
var array = [];
for (var key in extraitMP3) {
array.push(extraitMP3[key]);
}
console.log('array',array)
const result = array.map(d => ({
...d,
TypeMp3List:
Object.fromEntries(
Object.entries(d.TypeMp3List).filter(index => index !== id)
)
}))
console.log('result',result)
thisHandler.setState({result: result})
NotificationManager.success("le fichier audio est supprimé avec succès !", "");
},
onCancel() {
},
});
}
问题是在映射和过滤之后console.log(result)
给了我相同的结果console.log(array)
。看起来映射和过滤有问题,不知道到底是什么。任何帮助,将不胜感激。
解决方案
因为您使用Object.entries
- 这将返回一个二维数组(例如包含数组的数组),并且在您的内部filter
您正在检查每个数组是否等于一个数字。它不是。你想访问这个数组的第一个元素 - 所以要么有点解构:
Object.entries(d.TypeMp3List).filter(([index]) => index !== id)
或更详细的数组表示法:
Object.entries(d.TypeMp3List).filter(index => index[0] !== id)
推荐阅读
- python - python中列表的切片列表,跳转一项
- c++ - C++/Qt 项目的连接函数中不存在插槽?(已经重新制作)
- php - 将网格的内容布局获取到gutenber博客中
- php - 在外部php文件中合并css文件不起作用
- c# - 图像未显示在窗口中,Image.Source 似乎是有效的
- python - 使用 matplotlib 控制 Sankey 图中子系统的位置
- java - Apache Wicket - 自定义 servlet
- user-interface - 为什么图标按钮不居中?
- sql - 使用存储过程的 SQL 注入攻击
- c# - 传递动态方法时出错:不能使用方法组作为参数