我正在使用此代码过滤OUT类别以外的任何部分,而不是' 1',' 2'或' 3'但是显示的列表并没有过滤出类似LG' LG'和' NHA'。我使用过滤器不正确?
return this.components.filter((c) => {
if (c.cat in ['1', '2', '3']) {
return c;
}
});
答案 0 :(得分:2)
JavaScript in
operator没有检查数据是否在数组中;它检查对象(或其原型)中是否存在属性名称。
要确定某个值是否在数组中,您可以使用现代includes
(可以在旧版浏览器上进行多边形填充)方法,或使用较旧的indexOf
方法:
if (['1', '2', '3'].includes(c.cat)) {
或
if (['1', '2', '3'].indexOf(c.cat) != -1) {
对于更复杂的检查,您可以使用some
,它允许您使用回调来检查某些内容是否匹配,而不仅仅是进行值匹配。
答案 1 :(得分:2)
filter
的回调函数需要bool返回值。您可以使用includes
来确定数组是否包含某个元素。
如果您希望过滤components
仅包含其他而不是1,2和3的元素,则可以使用!
来否定includes
结果
let components = [{cat: '1'}, {cat: '2'}, {cat: '3'}, {cat: '4'},{cat: '5'}];
let result = components.filter((c) => {
return !['1', '2', '3'].includes(c.cat);
});
console.log(result);