如何循环遍历数组,只将以'a'开头的字符串添加到新数组中?

时间:2015-06-19 21:56:41

标签: javascript html

以下是该问题的内容。我理解如何遍历数组。我不知道如何检查数组中每个字符串中的特定字符,然后如何将这些字符串复制到新数组?

问题:遍历着名的数组只会将名称以“a”开头的人添加到您的收藏夹中:

var favorites = [];

  var famous = [ 'alex smith', 'amy whinehouse', 'cameron diaz', 'brad pitt',
  'ashton kutcher', 'mark whalberg', 'morgan freeman', 'mila kunis'];

到目前为止我的回答:

  var favoriteLetter = 'a';
  for(var i = 0; i < famous.length; i++) {
    if(famous.indexOf(0) === favoriteLetter) {
      favorites.push(famous[i]);
    }
  };

3 个答案:

答案 0 :(得分:3)

更改

 if(famous.indexOf(0) === favoriteLetter)

 if(famous[i].charAt(0) === favoriteLetter)

答案 1 :(得分:0)

您对.indexOf(0)的使用不正确。相反,您希望在数组中的每个字符串上使用.charAt(0)。所以,改变这个:

if(famous.indexOf(0) === favoriteLetter) {

到此:

 if(famous[i].charAt(0) === favoriteLetter) {

以下是工作代码段中的一些修复代码:

var famous = [ 'alex smith', 'amy whinehouse', 'cameron diaz', 'brad pitt', 'ashton kutcher', 'mark whalberg', 'morgan freeman', 'mila kunis'];
var favorites = [];
var favoriteLetter = 'a';
for(var i = 0; i < famous.length; i++) {
     if(famous[i].charAt(0) === favoriteLetter) {
         favorites.push(famous[i]);
     }
}

 document.write(JSON.stringify(favorites));

使用.filter()可能会觉得它更清洁。

var famous = [ 'alex smith', 'amy whinehouse', 'cameron diaz', 'brad pitt', 'ashton kutcher', 'mark whalberg', 'morgan freeman', 'mila kunis'];
var favoriteLetter = 'a';
var favorites = famous.filter(function(item) {
    return item.charAt(0) === favoriteLetter;
});

document.write(JSON.stringify(favorites));

答案 2 :(得分:0)

你的方法很棒。只要再扔一个,你也可以进行&#34;功能编程&#34;使用UnderscoreLodash等实施的_.filter()方法进行路由(在现代浏览器和IE9 +中也是native ES5)。

var favoriteLetter = 'a',
    favorites = _.filter(famous, function(name) {
      return name.charAt(0) === favoriteLetter;
    }));

这里是CodePen