new Array ложный массив
Задача из codewars "Mexican Wave". Получаем строку(слово), нужно вернуть массив слов, где начиная с первого слова и первой буквы один знак должен быть верхнем регистре и так до последней. Количество слов, соответственно, равно количеству символов в строке. Задача простая, с ходу написал return в одну строку.
return new Array(str.length).fill(str.split("")).map((el,ind,ar) => {el[ind] = el[ind].toUpperCase(); return el.join("")})
Но результат не тот:
[
"Rock",
"ROck",
"ROCk",
"ROCK"
]
Перевел это решение в цикл, но и тут тоже самое. Добавил для сравнения обычный массив, результат положительный.
Объясните в чем разница между массивами с и z
function cycle(b) {
for (let i = 0; i < b.length; i += 1) {
b[i][i] = b[i][i].toUpperCase()
b[i] = b[i].join("")
}
return b
}
function wave(str) {
let c = new Array(str.length).fill(str.split(""))
let z = [["r","o","c","k"],["r","o","c","k"],["r","o","c","k"],["r","o","c","k"]]
return [cycle(z),cycle(c)]
}
console.log(wave("rock"))