#javascript #arrays #node.js #string #loops
#javascript #массивы #node.js #строка #циклы
Вопрос:
У меня есть массив значений:
let myArray = [ 'Ifmanwas',
'meanttos',
'tayonthe',
'groundgo',
'dwouldha',
'vegivenu',
'sroots' ]
Я хочу распечатать новое значение для каждого элемента в массиве, чтобы первый элемент представлял собой совокупность всех символов с нулевым индексом, второй — совокупность всех символов с 1 позицией индекса и т.д…
Так, например, выводом первого массива будет «Imtgdvs» (все буквы в («0»), вторым будет «fearwer» (все буквы с индексом «1») и т.д…
Я очень запутался в том, как это сделать, и перепробовал несколько разных способов, любая помощь приветствуется.
Для этой простой попытки я создал массив всех букв для первого экземпляра:
function convertToCode(box) {
let arr = [];
for (i = 0; i < box.length; i ) {
let counter = i;
let index = box[counter];
let letter = index.charAt(0);
arr.push(letter);
}
console.log(arr);
}
convertToCode(myArray)
Спасибо
Комментарии:
1. Длина последней строки отличается, как с этим бороться?
2. Пожалуйста, поделитесь одной или несколькими вашими попытками. В противном случае мы просто пишем для вас код с нуля, что не совсем соответствует духу SO.
3. просто возвращает как можно лучше, чтобы конечным выводом было «sseoau», а пустое значение игнорировалось.
4. извините, буду редактировать
5. Вам также нужен внутренний цикл. Подумайте о столбцах и строках. Этот внешний цикл будет проходить только по строкам
Ответ №1:
Основная проблема в вашем примере заключается в следующем: index.charAt(0);
. При этом всегда будет получен первый символ, тогда как вам нужен вложенный цикл.
Вы могли бы использовать Array.map()
в сочетании с Array.reduce()
, например, так:
let myArray = ['Ifmanwas','meanttos','tayonthe','groundgo','dwouldha','vegivenu','sroots'];
const result = Array.from(myArray[0]) //Create an array as long as our first string
.map((l,idx) => //Update each item in that array...
myArray.reduce((out,str) => str[idx] ? out str[idx] : out, "") //to be a combination of all letters at index [idx] from original array
);
console.log(result);
Обратите внимание, что при этом используется первая строка в массиве, чтобы решить, сколько строк создать, в отличие от самой длинной строки.