Итерация по массиву и добавление значений во второй массив в зависимости от условия - PullRequest
0 голосов
/ 14 июня 2019

Я должен передать значения из одного массива в другой с условием, чтобы имя начиналось с "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()) 
  }
}

Консоль вернула мне ошибку.

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

Вы можете использовать метод фильтрации

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)
0 голосов
/ 14 июня 2019

С 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 для строки, но для строк эта функция просто не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...