我有一个对象lookups
数组和一个数组filters
。现在,我想使用object属性从对象数组中过滤出该数组name
。
我用过filter
,some
但无法获得预期的结果。
预期结果:
[{id: 3, name: "Linkedin"}]
let lookups = [
{id: 1, name: "Twitter"},
{id: 2, name: "Facebook"},
{id: 3, name: "Linkedin"}
]
let filters = ["Facebook", "Twitter"]
const filtered = lookups.filter(lookup => filters.some(filter => filter.toLowerCase() != lookup.name.toLowerCase()));
console.log(filtered)
您的代码为结果中的某些元素提供的值filters
不等于element的元素name
。因此,对于每个元素,某些名称是不相等的。
换句话说,你正在使用!=
与||
它总是返回true
。
let a = "anything";
console.log(a !== "thing1" || a !== "thing2")
您需要使用every()
而不是some()
。
let lookups = [
{id: 1, name: "Twitter"},
{id: 2, name: "Facebook"},
{id: 3, name: "Linkedin"}
]
let filters = ["Facebook", "Twitter"]
const filtered = lookups.filter(lookup => filters.every(filter => filter.toLowerCase() !== lookup.name.toLowerCase()));
console.log(filtered)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句