2016-09-25 4 views
-1

Я хочу преобразовать этот массив в один массив, как показано ниже. Как я могу выполнить это с помощью метода, который будет работать, независимо от уровня вложенности в массиве.Преобразование многопользовательского массива в один массив

var array = [1, [2], [3, [[4]]]] 
//Output = [1,2,3,4] 
+0

Это не дубликат этого вопроса. Этот вопрос не затрагивает разную степень гнездования. – mattHunting10

+0

Оригинальный вопрос не спрашивает об этом. Так что технически это не дубликат. – mattHunting10

+0

см. Http://stackoverflow.com/a/15030117/1447675 –

ответ

2

Для этого вы можете использовать рекурсивную функцию.

var array = [1, [2], [3, [[4]]]]; 
 

 
function flatten(ar) { 
 
    var result = []; 
 

 
    ar.forEach(function(e) { 
 
    if (Array.isArray(e)) { 
 
     result = result.concat(flatten(e)); 
 
    } else { 
 
     result.push(e); 
 
    } 
 
    }) 
 

 
    return result; 
 
} 
 

 
console.log(flatten(array));

0

Сделать это рекурсивный!

result = []; 

function covert(array) { 
for (var b in array) { 
    if (typeof b === number) { 
     result.push(b) 
    } else { 
     convert(b) 
    } 
} 

}

Смежные вопросы