本文共 657 字,大约阅读时间需要 2 分钟。
数组的扁平化,就是将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组。
举个例子,假设有个名为 flatten 的函数可以做到数组扁平化,
var arr = [1, [2, [3, 4]]];console.log(flatten(arr)) // [1, 2, 3, 4]
我们最一开始能想到的莫过于循环数组元素,如果还是一个数组,就递归调用该方法:
// 这一种方法通过递归来实现,当元素为数组时递归调用,兼容性好function flattenArray(array) { if (!Array.isArray(array)) return; let result = []; result = array.reduce(function (pre, item) { // 判断元素是否为数组,如果为数组则递归调用,如果不是则加入结果数组中 return pre.concat(Array.isArray(item) ? flattenArray(item) : item); }, []); return result;}// 这一种方法是利用了 toString 方法,它的一个缺点是改变了元素的类型,只适合于数组中元素都是整数的情况function flattenArray(array) { return array.toString().split(",").map(function (item) { return +item; })}
转载地址:http://eglof.baihongyu.com/