Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Написать функцию flat которая развернет массив вида [1, [2], [3, [[[4]]]]] в плоский
- */
- // Рекурсия
- const arr = [1, [2], [3, [[[4]]]]];
- const flat = arr => {
- let result = [];
- const walk = el => {
- el.forEach(item => {
- if (Array.isArray(item)) {
- result.push(item)
- } else {
- walk(item);
- }
- })
- return result;
- }
- return walk(arr);
- }
- //Рекурсия reduce + concat
- function flat(arr1) {
- return arr1.reduce((acc, val) => {
- return Array.isArray(val) ?
- acc.concat(flat(val)) :
- acc.concat(val)
- }, []);
- }
- // Очередь
- function flatten(array) {
- var stack = [...array];
- var result = [];
- while (stack.length > 0) {
- var element = stack.pop();
- if (Array.isArray(element)) {
- for (var i = element.length - 1; i >= 0; i--) {
- stack.push(element[i]);
- }
- } else {
- console.log(element)
- result.push(element);
- }
- }
- return result;
- }
- console.log(flat([1, 'any [complex] string', null, function() {}, [1, 2, [3, '4'], 0], [], { a: 1 }]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement