代码之家  ›  专栏  ›  技术社区  ›  Jason

如果数组值包含一些字符串,如何过滤它

  •  0
  • Jason  · 技术社区  · 8 年前

    我有一个这样的数组

    [ { day: 'Friday', time: '14-16 Free' },
     { day: 'Friday', time: '16-18 Free' },
     { day: 'Friday', time: '18-20 Free' },
     { day: 'Friday', time: '20-22 Fully booked' } ]
    

    我想过滤掉任何不包含“Free”的值,我尝试了长度,但没用,有人能解释为什么吗?

    var array = [ { day: 'Friday', time: '14-16 Free' },
         { day: 'Friday', time: '16-18 Free' },
         { day: 'Friday', time: '18-20 Free' },
         { day: 'Friday', time: '20-22 Fully booked' } ];
    console.log(array.filter((e) => e.time === (e.time.length < 11)));
    2 回复  |  直到 8 年前
        1
  •  1
  •   dhilt    8 年前

    尝试 Array.prototype.indexOf 相反:

    let data = [ 
     { day: 'Friday', time: '14-16 Free' },
     { day: 'Friday', time: '16-18 Free' },
     { day: 'Friday', time: '18-20 Free' },
     { day: 'Friday', time: '20-22 Fully booked' }
    ];
    
    let result = data.filter((e) => e.time.indexOf('Free') === -1);
    
    console.log(result); // [{day: "Friday", time: "20-22 Fully booked"}]
    

    Plunker是 here .

        2
  •  1
  •   Mamun    8 年前

    使用尝试以下操作 ES6 includes() :

    var array = [ { day: 'Friday', time: '14-16 Free' },
         { day: 'Friday', time: '16-18 Free' },
         { day: 'Friday', time: '18-20 Free' },
         { day: 'Friday', time: '20-22 Fully booked' } ];
    
    var res = array.filter((e) => (!(e.time.includes('Free'))));
    console.log(res)