[英]Iterate over an array and add values to second array based on condition
我必须将值从一个数组传递到另一个数组,条件是名称以“A”开头。
var favorites = [] var famous = [ 'alex smith', 'amy whinehouse', 'cameron diaz', 'brad pitt', 'ashton kutcher', 'mark whalberg', 'morgan freeman', 'mila kunis'] for (var i=0; i<famous.length; i++ ) { if(famous[i][0]==="a") { favorites.push((famous[i][0]).unshift()) } }
控制台返回一个错误。
使用 ES6 你可以这样写:
var famous = ['alex smith', 'amy whinehouse', 'cameron diaz', 'brad pitt', 'ashton kutcher', 'mark whalberg', 'morgan freeman', 'mila kunis'] var favorites = famous.filter(artist => artist[0] == 'a'); console.log(favorites)
您的原始代码应如下所示:
var favorites = [] var famous = ['alex smith', 'amy whinehouse', 'cameron diaz', 'brad pitt', 'ashton kutcher', 'mark whalberg', 'morgan freeman', 'mila kunis'] for (var i=0; i<famous.length; i++) { if (famous[i][0]==='a') { favorites.push(famous[i]); } } console.log(favorites)
您的错误代码TypeError: famous[i][0].unshift is not a function
表示您试图在不是数组的东西上使用数组函数。 您在字符串上调用函数unshift
但对于字符串,该函数根本不存在。
您可以使用过滤方法
var favorites = []; var famous = [ 'alex smith', 'amy whinehouse', 'cameron diaz', 'brad pitt', 'ashton kutcher', 'mark whalberg', 'morgan freeman', 'mila kunis']; var favorites = famous.filter((artist, index) => { if (artist[0] == 'a') { delete famous[index]; return true } return false; }); famous = famous.filter(Boolean) console.log(famous) console.log(favorites)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.