使用.filter使用react/javascript从对象数组中删除项
我正在使用javascript的.filter函数从这个对象数组中删除TypeMp3List中的元素ID。格式如下: 例如,删除ID为33390的MP3时,在执行筛选后,我希望获得的格式如下: 这是我迄今为止构建的代码:使用.filter使用react/javascript从对象数组中删除项,javascript,arrays,reactjs,object,ecmascript-6,Javascript,Arrays,Reactjs,Object,Ecmascript 6,我正在使用javascript的.filter函数从这个对象数组中删除TypeMp3List中的元素ID。格式如下: 例如,删除ID为33390的MP3时,在执行筛选后,我希望获得的格式如下: 这是我迄今为止构建的代码: showDeleteConfirmation(value, id, index, thisHandler) { confirm({ title: 'Voulez vous supprimer cette audio ?', content
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(d.TypeMp3List).filter(([index]) => index !== id)
或更详细的数组表示法:
Object.entries(d.TypeMp3List).filter(index => index[0] !== id)
由于需要基于.filter验证的新数组,请尝试返回正在比较的结果:
Object.fromEntries(
Object.entries(d.TypeMp3List).filter((index) => {
return index !== id
)};
)
我认为您在使用filter
函数时犯了一个错误
在我看来,您可以将每个项传递给filter函数,并使用其id
与filterId
进行比较
showDeleteConfirmation(value, filterId, index, thisHandler) {
...
Object.entries(d.TypeMp3List).filter(listItem => listItem.id !== filterId)
...
@JackBashford Id传入Id
在showDeleteConfirmation
params中是什么意思?你说得对,但我在两个控制台日志中仍然得到相同的结果。要说的是,删除是正确的工作这不是问题,我改变了根据你所说的,什么也没有发生。