var arr = [
{
id: 1,
name: '1'
},
{
id: 2,
name: '2'
},
{
id: 3,
name: '3'
},
{
id: 4,
name: '4'
},
{
id: 5,
name: '5'
},
]
let tiaojian = ['3', '5'] // 条件数组
var temp = arr.filter(item => {
for (let i = 0; i < tiaojian.length; i++) {
if (tiaojian[i] !== item.name) {
return true
} else {
return false
}
}
})
console.log(temp)
/*
[ { id: 1, name: '1' },
{ id: 2, name: '2' },
{ id: 3, name: '3' },
{ id: 4, name: '4' },
{ id: 5, name: '5' } ]
*/
如上面的代码所示,我想在一个对象数组中过滤除条件数组外的内容。 理想状态应该显示id为:1、 2、 4的对象。可是结果却是显示了数组内的所有内容,过滤完全没起到效果。这是为什么呢?
判断条件写错了,你那个for循环,根本就没有循环比较每个元素,只是比较了第一个元素'3',结果应该不是显示所有的内容,而是1,2,4,5
正确写法应该是