ОК, один из способов - включить библиотеку underscore.js . Это очень хорошая, легкая, но мощная служебная библиотека, в которой есть _.flatten, которая делает именно это.
За исключением этого, вы можете взять код underscore.js для flatten и изменить его, чтобы удалить любые другие зависимости подчеркивания, чтобы создать свой собственный "flatten".
Вот код "_.flatten" underscore.js:
_.flatten = function(array) {
return _.reduce(array, function(memo, value) {
if (_.isArray(value)) return memo.concat(_.flatten(value));
memo[memo.length] = value;
return memo;
}, []);
};
Обратите внимание, что он делает некоторые приятные вещи для вас. Например, многие функции подчеркивания, такие как _.reduce, будут проверять, реализована ли в браузере собственная версия, что есть у некоторых. Если это так, он будет использовать нативный, который, конечно, работает намного быстрее. Реализация _.isArray делает то же самое.