Заполнение массива с помощью цикла for и другого массива - PullRequest
0 голосов
/ 29 июня 2018

Это скорее учебное упражнение и ничего сверхъестественного - я не уверен в том, что лучше всего искать в Google то, что я ищу, я просмотрел несколько других предложенных ответов и не нашел ничего, что выглядело супер-актуальным.

Мне интересно, есть ли способ заполнить массив, используя другой массив и цикл for (в отличие от изменения содержимого существующего массива на месте). Я представляю себе что-то вроде:

var existingArray = ["Thing1", "Thing2", "Thing3"];

let newArray = for (var i=0; i < existingArray.length; i++) {
  "Modified string " + existingArray[i];
}

// Output: ["Modified string Thing1", "Modified string Thing2", "Modified string Thing3"]

где я могу просто создать новую переменную массива и заполнить ее более или менее в том же блоке кода. Я знаю, как сделать это, возможно, более традиционным способом, когда я просто говорю:

newArray = [];
oldArray = ["Thing1", "Thing2", "Thing3"]

for (var i = 0; i < oldArray.length; i++) {
  newArray.push("Modified string " + oldArray[i]);
}

Извините, если это несколько глупый вопрос, мне просто любопытно, есть ли способ сделать это и есть ли преимущество в этом. Кажется, было бы здорово просто объявить новый массив и заполнить его одним кусочком кода вместо объявления нового массива, а затем использовать .push () для его заполнения.

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

newArray = [];
oldArray = ["Thing1", "Thing2", "Thing3"]

for (i in oldArray) {
  newArray.push("Modified string " + oldArray[i]);
}
console.log(newArray)
0 голосов
/ 29 июня 2018

Было бы еще лучше использовать .map, поскольку вы преобразовываете один массив в другой, требуется только одна строка:

const existingArray = ["Thing1", "Thing2", "Thing3"];
console.log(
  existingArray.map(thing => 'Modified string ' + thing)
);

Если у вас нет существующего массива до .map, вы все равно можете сделать что-то похожее для немедленного создания массива, используя Array.from - определите длину в первом аргументе и поместите функцию map во втором аргументе:

const originalArray = Array.from({ length: 3 }, (_, i) => 'Thing ' + (i + 1));
console.log(originalArray);
...