像这样过滤数据:
cat = ['abc','bcd','efg','ghr'];
cat.map(i => {i.includes('a')});
console.log(cat);
结果是:["abc", "bcd", "efg", "ghr"]
为什么不是["abc"]
?
答案 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.filter,Array.map,Arrow 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);