JavaScript 数组拍平方法总结
什么是数组拍平
在 JavaScript 中可以创建多重嵌套的数组,例如:
const nestedArr = [1, 2, [3, 4, [5, 6]]];
上述数组中包含了三个元素,其中第三个元素是一个嵌套的子数组,该子数组又包含了两个元素和一个嵌套的孙子数组。这样多重嵌套的数组在实际开发中很常见。
数组拍平指的是将多重嵌套的数组转化为一维数组,例如:
[1, 2, 3, 4, 5, 6]
原生方式实现数组拍平
JavaScript 语言提供了多种方式实现数组拍平,其中最简单的一种是使用 Array.prototype.flat()
方法,例如:
const nestedArr = [1, 2, [3, 4, [5, 6]]];
const flatArr = nestedArr.flat(2);
console.log(flatArr); // [1, 2, 3, 4, 5, 6]
上述代码中 Array.prototype.flat()
方法的参数指定了拍平的深度,如果不指定深度则默认拍平一层。
需要注意的是在旧版本的浏览器中不支持这个方法,可以使用第三方库 lodash
中的 _.flattenDeep()
方法代替,例如:
const nestedArr = [1, 2, [3, 4, [5, 6]]];
const flatArr = _.flattenDeep(nestedArr);
console.log(flatArr); // [1, 2, 3, 4, 5, 6]
自定义函数实现数组拍平
如果想写一个自己的函数实现数组拍平,可以使用递归思想,例如:
function flat (arr) {
let result = [];
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
result = result.concat(flat(arr[i]));
} else {
result.push(arr[i]);
}
}
return result;
}
const nestedArr = [1, 2, [3, 4, [5, 6]]];
const flatArr = flat(nestedArr);
console.log(flatArr); // [1, 2, 3, 4, 5, 6]
上述代码中,flat()
函数使用递归的方式实现数组拍平,当遇到子数组时会递归调用自身。
下面使用另一个例子说明,例如:
const nestedArr = [1, [2, 3, [4, 5]], 6, [7, [8, [9]]]];
const flatArr = flat(nestedArr);
console.log(flatArr); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
上述代码中的 nestedArr
数组包含了四个元素,其中包含多层嵌套的子数组,通过调用 flat()
函数可以将其转化为一维数组。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript数组拍平方法总结 - Python技术站