关于String方法包含在JavaScript中?

时间:2018-05-09 07:34:12

标签: javascript

像这样过滤数据:

 cat = ['abc','bcd','efg','ghr'];
 cat.map(i => {i.includes('a')});
 console.log(cat);

结果是:["abc", "bcd", "efg", "ghr"]

为什么不是["abc"]

4 个答案:

答案 0 :(得分:1)

您没有保存返回的结果。请记住.map不会更改数组

看起来你需要filter数组,所以使用.filter

var cat = ['abc','bcd','efg','ghr'],
     filteredCats = cat.filter(i => i.includes('a'));
 console.log(filteredCats);

答案 1 :(得分:1)

因为map不会更改数组。它返回一个数组,在这种情况下,应该由布尔值组成。我想你想要filter

let cat = ['abc', 'bcd', 'efg', 'ghr'];
let f = cat.filter(i => i.includes('a'));
console.log(f);

答案 2 :(得分:0)

需要进行以下改进

  • 要过滤,您需要使用filter功能,而不是map
  • 过滤器和地图功能都不会更新原始数组, 因此,你需要重新分配它
  • 如果您在箭头功能中使用括号,则需要添加返回。对于一个衬里,有一个附加到箭头功能的默认返回。

var cat = ['abc','bcd','efg','ghr'];
 cat = cat.filter(i => i.includes('a'));
 console.log(cat);

有关参考资料,Array.filterArray.mapArrow Functions

答案 3 :(得分:0)

我建议使用indexOf()代替includes()因为includes()在IE浏览器中无法识别,如果您希望代码是的话,您也可以将箭头功能更改为普通功能在IE和其他旧浏览器中执行时没有任何错误。



let cat = ['abc', 'bcd', 'efg', 'ghr'];
let res = cat.filter(i => i.indexOf('a') !== -1);
console.log(res);