繁体   English   中英

vue.js:筛选无法正常工作

[英]vue.js: Filtering not working as I expect

我正在使用此代码过滤掉“ 1”,“ 2”或“ 3”以外的任何类别的零件,但显示的列表并未过滤掉“ LG”和“ NHA”之类的猫。 我使用的过滤器不正确?

return this.components.filter((c) => {
    if (c.cat in ['1', '2', '3']) {
        return c;
    }
});

JavaScript的in运算符不会检查值是否在数组中; 它检查是否在对象(或其原型)中存在属性名称

要确定某个值是否在数组中,可以使用现代的includes (可以在较旧的浏览器上进行填充)方法或较旧的indexOf方法:

if (['1', '2', '3'].includes(c.cat)) {

要么

if (['1', '2', '3'].indexOf(c.cat) != -1) {

对于更复杂的检查,可以使用some检查,该检查使您可以使用回调检查某些内容是否匹配,而不仅仅是进行值匹配。

filter的回调函数需要布尔值。 您可以使用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); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM