首页 > 解决方案 > 与匹配的数组值匹配时删除整个键

问题描述

我是新手,我有一个对象和一个数组,与数组值相比,我想从对象中获取不匹配项的详细信息。我尝试过,但在 consol.log 时显示了所有数据。这是我的代码

var content:[
    0:{id:20, name:'Jack Daniel'}
    1:{id:21, name:'Sophie McDonald'}
    2:{id:22, name:'Jason Thomas'}
    3:{id:23, name:'Chris Williams'}
]

var filter:[Sophie McDonald, Chris Williams]

filterValues = content.filter(item=> {
            
    for(var i = 0;i<filter.length;i++) {
        if (item.name === filtered[i])
        {
            return item              
        }       
     } 
});
console.log(filteredValues)
  // returns  0:{id:21, name:'Sophie McDonald'}
  //          1:{id:23, name:'Chris Williams'}

但我需要无与伦比的结果,

filterValues = content.filter(item=> {
            
    for(var i = 0;i<filter.length;i++) {
        if (item.name !== filtered[i])
        {
            return item              
        }       
     } 
});
console.log(filteredValues)
// returns  0:{id:20, name:'Jack Daniel'}
//          1:{id:21, name:'Sophie McDonald'}
//          2:{id:22, name:'Jason Thomas'}
//          3:{id:23, name:'Chris Williams'}

结果必须是

 0:{id:20, name:'Jack Daniel'}
 1:{id:22, name:'Jason Thomas'}

标签: javascriptarraysreactjsreact-nativefor-loop

解决方案


尝试使用filter,检查数组的值是否存在于您的对象值中:

const content = [{
    id: 20,
    name: 'Jack Daniel'
  },
  {
    id: 21,
    name: 'Sophie McDonald'
  },
  {
    id: 22,
    name: 'Jason Thomas'
  },
  {
    id: 23,
    name: 'Chris Williams'
  }
];

const values = ['Sophie McDonald', 'Chris Williams'];

const filteredValues = content.filter(({
  name
}) => !values.includes(name));

console.log(filteredValues);


推荐阅读