当我从列表中选择项目并选择保存时,该项目应从列表中删除。我能够使用此方法检索所选项目 - form.value.selectedMessages - 它为我提供了我选择的对象的数组。作为数组的已接收消息的总数是rMessages。这里发生了什么是我的消息被删除而不仅仅是被选中的消息。我可能很容易忘记这件事。欣赏它!
save(form){
this.rMessages = this.rMessages.filter(resultTwo => {
form.value.selectedMessages.map(resultOne => {
return resultTwo.messageID !== resultOne.messageID
})
})
}
数据
消息列表 -
[{messageID: 1, message: "message One"},
{messageID: 2, message: "message Two"}]
选择的消息或两者都可以
[{messageID: 1, message: "message One"}]
如果选择One,则下面只显示
[{messageID: 2, message: "message Two"}]
答案 0 :(得分:1)
好的开始你需要在过滤函数中返回一些东西;
在你的代码中没有回报。这意味着它将默认返回undefined
,这基本上是false
。因为它总是返回false所以从数组中过滤掉所有内容。
逻辑也看起来有点狡猾。
map
会返回一个新数组,我不认为这就是你想要的。相反,您可以根据自己的情况使用find
,some
或every
。
以下是使用find
this.rMessages = this.rMessages.filter(resultTwo => {
return !form.value.selectedMessages.find(resultOne => {
return resultTwo.messageID === resultOne.messageID
})
})
下面是一个有效的修改示例,但这个想法仍然是一样的
var rMessages = [1,2,3,4,5].map(item => {return {messageID:item}});
var selected = [2,5].map(item => {return {messageID:item}});
var form = {
value:{
selectedMessages:selected
}
};
rMessages = rMessages.filter((resultTwo) => {
return !form.value.selectedMessages.find((resultOne) => {
return resultTwo.messageID === resultOne.messageID
})
})
console.log(rMessages)