Вы можете попробовать lodash:
_.flattenDeep([1, [2, [3, [4]], 5]]);
// => [1, 2, 3, 4, 5]
https://lodash.com/docs/4.17.2#flattenDeep
, но я не уверен в вашем примере данных; вы сказали массив, но он выглядит (почти) как объект, и в этом случае вам придется сначала преобразовать это в массив. Опять же, lodash - твой друг!
Если вы не хотите использовать lodash вы могли бы попробовать что-то вроде этого:
var results = [];
function flatten(arr) {
arr.forEach(function(item) {
if (Array.isArray(item)) {
flatten(item);
}
else {
results.push(item);
}
})
}
flatten(data);
Fiddle
Редактировать после комментария Нина Scholz
Похоже OP имеет объект с ключами «0», «1», «2» и т. Д., Каждый из которых может содержать рекурсивный массив. Таким образом, приведенный выше код должен быть выполнен по данным, связанным с каждым ключом, и результаты добавляются к значению ключа для получения 123, 1245 и т. Д.
Я устанавливаю переменную и заполняю ее 'this.path + = i', где' i' является итератором цикла. Но я не мог понять, как можно рекурсивно цитировать. Я попробовал пример кода других людей, но это не помогло мне. –
Без каких-либо доказательств того, что вы сами пытались решить эту проблему (нет неработающего кода) Я не собираюсь отвечать за вас, но я дам вам подсказку. Рекурсивные структуры данных могут обрабатываться с помощью рекурсивных алгоритмов. – GordonM
хороший вопрос, но закрыт. –