高阶函数:数组过滤器 JavaScript

Higher Order Functions : Array Filter JavaSctipt

我有一个要过滤的字符串数组。

var words = ['hello', 'sunshine', 'apple', 'orange', 'pineapple'];

我只想保留包含字母 'a' 的单词。

var wordsWithA = words.filter(function (word) {
  return words.indexOf('a', 4);
  
});

如何使用 javascript 中的 indexOf 完成此操作?

indexOf returns -1,如果它没有在容器中找到元素。您应该在每个字符串 word 上使用 indexOf 而不是在数组 words:

var words = ['hello', 'sunshine', 'apple', 'orange', 'pineapple'];

var wordsWithA = words.filter(function (word) {
  return word.indexOf('a') !== -1;
});

console.log(wordsWithA);

尝试

var words = ['hello', 'sunshine', 'apple', 'orange', 'pineapple'];
var wordsWithA = words.filter(function (word) {
  return word.indexOf('a') > -1;
  
});

String.prototype.indexOf(searchString, position) 有两个参数:

  1. 首先是需要查找的子串
  2. 第二个是可选参数,即需要查找子串的位置,默认值为0.

和方法 returns 第一次出现的 searchString 的索引,如果找到,则 returns -1 否则。

在您的情况下,您可以省略 position 参数并按如下方式执行:

const words = ["hello", "sunshine", "apple", "orange", "pineapple"],
  wordsWithA = words.filter((word) => word.indexOf("a") !== -1);

console.log(wordsWithA);