Skip to content

[js] 第60天 请实现一个flattenDeep函数,把多维数组扁平化 #252

Open
@haizhilin2013

Description

@haizhilin2013
Collaborator

第60天 请实现一个flattenDeep函数,把多维数组扁平化

Activity

nusr

nusr commented on Jun 15, 2019

@nusr
// const newArray = arr.flat(depth)
const temp = [1,2,[1,2]];
console.log(temp.flat(Infinity));
// [1,2,1,2]
forever-z-133

forever-z-133 commented on Jun 15, 2019

@forever-z-133
function flattenDeep(arr, deepLevel = Infinity) {
  if (deepLevel < 1) return arr;
  var needMoreDeep = deepLevel > 0;
  return [].concat(...arr.map(item => {
    return  Array.isArray(item) && needMoreDeep ? flattenDeep(item, deepLevel - 1) : item;
  }));
}
console.log(flattenDeep([1,2,3,[4,[5,[6]]]], 2)); // [1, 2, 3, 4, 5, [6]]
Delicate-lee

Delicate-lee commented on Jun 15, 2019

@Delicate-lee

function fn(arr) {
let res = [];
(function gn(arr) {
arr.forEach(item => {
if(Array.isArray(item)) {
gn(item)
} else res.push(item)
})
})(arr)

return res
}

tannnb

tannnb commented on Jun 16, 2019

@tannnb

function flattenDeep(arr) {
if(arr && arr.length == 0) {
return arr
}
return arr.toString().split(',')
}
flattenDeep([1,2,3,[4,[5,[6]]]]) // ["1", "2", "3", "4", "5", "6"]

arronf2e

arronf2e commented on Jun 18, 2019

@arronf2e
function flattenDeep(arr, result = []) {
    var len = arr.length
    for(var i = 0;  i < len; i++) {
        if(Array.isArray(arr[i])) {
            flattenDeep(arr[i], result)
        }else {
            result.push(arr[i])
        }
    }
    return result
}
HuaRongSAO

HuaRongSAO commented on Jun 21, 2019

@HuaRongSAO

基础数据:arr.toString().split(",");
复杂数据:const flatten = arr => [].concat(... arr.map(ar => Array.isArray(ar)?flatten(arr): ar)

luobinhang

luobinhang commented on Jun 25, 2019

@luobinhang
function flatten (arr) {
  return arr.reduce((pre, current) => {
    return pre.concat(Array.isArray(current) ? flatten(current) : current)
  }, [])
}
HuaRongSAO

HuaRongSAO commented on Jun 25, 2019

@HuaRongSAO
const flat = arrs => arrs.reduce((i,j) => Array.isArray(j)?[...i,...flat(j)]:[...i,j])
MY729

MY729 commented on Jul 2, 2019

@MY729
Konata9

Konata9 commented on Jul 8, 2019

@Konata9
const deepFlatten = (arr) => {
  let result = [];
  arr.forEach((item) => {
    Array.isArray(item)
      ? (result = [...result, ...deepFlatten(item)])
      : (result = [...result, item]);
  });

  return result;
};

const arr = [
  1,
  [2, 3, "a", ["b"], ["c", "d", "e"]],
  [4, 5, 6, [7, 8, 9, [10, 11, 12]]]
];
console.log(deepFlatten(arr));
shufangyi

shufangyi commented on Jul 23, 2019

@shufangyi
Array.prototype.flattenDeep = function(layer = 3) {
  return this.reduce(
    (pre, curr) =>
      Array.isArray(curr) && layer > 0
        ? [...pre, ...curr.flattenDeep(layer - 1)]
        : [...pre, curr],
    []
  )
}

console.log([1, 2, 3, [4, 5, [6, 7, [8, 9, [10]]]]].flattenDeep(2))
// [ 1, 2, 3, 4, 5, 6, 7, [ 8, 9, [ 10 ] ] ]
console.log([1, 2, 3, [4, 5, [6, 7, [8, 9, [10]]]]].flattenDeep(+Infinity))
// [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
chenyouf1996

chenyouf1996 commented on Jul 26, 2019

@chenyouf1996
// 扁平化
function flattenDeep(arr) {
  let newArr = []
  for (let i = 0; i < arr.length; i++) {
    if (!Array.isArray(arr[i])) {
      //当前元素不是数组则直接push
      newArr.push(arr[i])
    } else {
      //当前元素是数组则递归自身返回一维数组拼接
      newArr = newArr.concat(flattenDeep(arr[i]))
    }
  }
  return newArr
}
let arr = [[0, 1, 2, 3, 4], 5, [6, 7, [8, 9]]]
console.log(flattenDeep(arr)) // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
ppppp-x-x

ppppp-x-x commented on Jul 30, 2019

@ppppp-x-x
function flatDeep (arr) {
  return arr.reduce((total, cur) => 
    total.concat(Object.prototype.toString.call(cur) === '[object Array]' ? flatDeep(cur) : cur)
  , []);
}
jiamianmao

jiamianmao commented on Aug 8, 2019

@jiamianmao

const flat = arr => arr.toString().split(',')

8 remaining items

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    jsJavaScript

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @haizhilin2013@HuaRongSAO@Konata9@nusr@arronf2e

        Issue actions

          [js] 第60天 请实现一个flattenDeep函数,把多维数组扁平化 · Issue #252 · haizlin/fe-interview