以下是该问题的内容。我理解如何遍历数组。我不知道如何检查数组中每个字符串中的特定字符,然后如何将这些字符串复制到新数组?
问题:遍历着名的数组只会将名称以“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]);
}
};
答案 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;使用Underscore,Lodash等实施的_.filter()
方法进行路由(在现代浏览器和IE9 +中也是native ES5)。
var favoriteLetter = 'a',
favorites = _.filter(famous, function(name) {
return name.charAt(0) === favoriteLetter;
}));
这里是CodePen。