我有以下数据:
removed_users = [1]
和
userProfile = [{id:1 , user:{id:1,username:test}} ,
{id:2 , user:{id:2,username:test2}} ,]
我想做什么:
我希望能够基于数组removed_users
从userProfile中删除正确的对象。我在下面尝试了以下代码,但未将其从数组中删除
state.project['userProfile'].filter(function(user) {
return !action.payload.find(function(removed) {
return removed === user.user.id
})
})}
这是化简器的代码,可以帮助我从状态中删除removed_users
case 'user_remove': return (updateObject(state, {
project: {...state.project , ['users']: state.project['userProfile'].filter(function(user) {
return !action.payload.find(function(removed) {
return removed === user.user.id
})
})}
}))
这是updateObject辅助函数的脚本:
export const updateObject = (oldObject, updatedProperties) => {
return {
...oldObject,
...updatedProperties
}
}
答案 0 :(得分:1)
过滤器有误。使用这样的表达式:
userProfile.filter((user)=>!removed_users.includes(user.id))
在操场上查看完整示例:https://jscomplete.com/playground/s534466
答案 1 :(得分:0)
尝试删除用户:
const userProfile = [
{id:1 , user:{id:1,username:"t1"}} ,
{id:2 , user:{id:2,username:"t2"}}]
const arr= [1];
const filtered = userProfile.filter(({user})=> !arr.includes(user.id));
console.log(filtered)
答案 2 :(得分:0)
步骤:
function removeUser(id){
return {
type: "REMOVE_USER",
payload: id
}
}
dispatch(removeUser(1))
function reducer(state, action){
switch(action.type){
case "REMOVE_USER":
return {
...state,
users: state.users.filter(user => user.id !== action.payload),
}
// other cases
}
}
祝你好运。