Есть массив: [['a', 'b', 'c'], 'r', 't', ['g', ['j', 'u', 'i'], 'y'], 'i'].
Как мне его разложить до первого уровня, чтобы вышел такой массив: ['a', 'b', 'c', 'r', 't', 'g', 'j', 'u', 'i', 'y', 'i'].
В голову приходит только циклами и проверками.
Решение для общего случая, использующее функции isArray, map и concat.
function decompose(array) {
return Array.isArray(array) ?
[].concat(...array.map(decompose)) :
[array];
}
let array = [['a', 'b', 'c'], 'r', 't', ['g', ['j', 'u', 'i'], 'y'], 'i'];
let arrayDecomposed = decompose(array);
console.log(arrayDecomposed);
При отсутствии квадратных скобок в элементах массива можно сделать так:
var arr = [['a', 'b', 'c'], 'r', 't', ['g', ['j', 'u', 'i'], 'y'], 'i'];
var str = JSON.stringify(arr);
str = str.replace(/\[|\]/g, '');
arr = JSON.parse('[' + str + ']');
console.log(arr);
лютое рекурсивное решение в копилку (:
var data = [['a', 'b', 'c'], 'r', 't', ['g', ['j', 'u', 'i'], 'y'], 'i'];
function merge(a){
var result = [];
a.forEach(function(item){
if(Array.isArray(item)){
result = result.concat(merge(item));
}
else{
result.push(item);
}
});
return result;
}
var out = merge(data);
console.log(JSON.stringify(out));
Если нет внутри объектов, то...
function get1DArray(arr){
return arr.join().split(",");
}
var input = [['a', 'b', 'c'], 'r', 't', ['g', ['j', 'u', 'i'], 'y'], 'i'];
console.log(get1DArray(input));
Вроде работает.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости