Есть какой-то элегантный способ разбить значение на буквы, за тем перейти к следующему значению? У меня что-то одни костыли да ошибки получаются.
var key = 0;
var array = [
[
'один',
'два',
'три'
],
[
'first',
'second',
'third'
]
];
array[key]
Пример без разбивания на буквы:
for(var value = 0; value < array[key].length; value++) {
console.log(array[key][value]);
}
Результат:
один
два
три
Желаемый результат:
о
д
и
н
д
в
а
т
р
и
var key = 0;
var array = [
[
'значение',
'значение',
'значение'
],
[
'значение',
'значение',
'значение',
'значение',
'значение'
]
];
for(let i = 0; i < array.length; i++) {
for(let j = 0; j < array[i].length; j++) {
for(let k = 0; k < array[i][j].length; k++) {
document.write(array[i][j][k]);
}
}
}
Элементы массива можно перебрать с помощью метода forEach
. Он вызовет функцию callback
для каждого элемента массива:
arr.forEach(function callback(currentValue, index, array) {
//your iterator
}[, thisArg]);
Этот метод применяется именно к массивам. Чтобы пройти по символам из строки, можно сначала воспользоваться методом split. Он разобьёт строку на фрагменты и вернёт массив из этих фрагментов:
var arr = str.split([separator][, limit]);
Получится, например, так:
var array = [
[
'один',
'два',
'три'
],
[
'первый',
'второй',
'третий'
],
[
'first',
'second',
'third'
]
];
array.forEach( function(word) {
word[0].split('').forEach( function(letter) {
console.log( letter );
});
});
Но массивы с числовыми индексами быстрее всего перебираются циклом for (var i=0; i<arr.length; i++)
, потому что браузер их "особым образом оптимизирует". Поэтому быстрее всего отработает код, предложенный @MedvedevDev.
Если в вопросе было не о скорости, то можно вот так вот:
function f(arr) {
return arr.reduce((s, a) => {
return s.concat(typeof a === 'string' ? a.length === 1 ? a : f(Array.from(a)) : f(a));
}, []);
}
такой вызов
console.log(f([
[
'значение',
'значение',
'значение'
],
[
'значение',
'значение',
'значение',
'значение',
'значение'
]
]));
вернет
[ 'з',
'н',
'а',
'ч',
'е',
'н',
'и',
'е',
'з',
'н',
'а',
'ч',
'е',
...
Eщё один вариант:
array.forEach( function(word) {
for( let k in word ) {
word[k].split('').forEach( function(letter) {
console.log( letter );
});
}
});
for( var k in array ) {
for (var i in array[k] ) {
for ( var j in array[k][i]) {
console.log( array[k][i][j] )
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
При клике по некоторому элементу управления на экране появляется div c текстом подсказокУ дива есть кнопка "закрыть"
Интересует возможность реализации выделения области изображения по нескольким точкам, которые пользователь мышью будет ставитьАналог...
how to hide stackLabel for spline in this example Как скрыть вывод суммы для сплайна?
Каким образом можно сбрасывать таймер? при нажатие закрыть уведомление (Close или Message)