当我们需要将一个多维数组(嵌套数组)转换成一维数组时,我们需要用到数组扁平化操作。JavaScript中有多种实现数组扁平化的方法,本文将会总结并介绍这些方法。
基础方法——递归
递归是最基础也是最直观的方法。
function flatten(arr) {
var result = [];
for (var i = 0, len = arr.length; i < len; i++) {
if (Array.isArray(arr[i])) {
// 递归调用
result = result.concat(flatten(arr[i]));
} else {
result.push(arr[i]);
}
}
return result;
}
该方法中,我们对数组中的元素逐一进行遍历,当遍历到嵌套数组的时候,我们递归调用自身,将结果添加到结果数组中。
以下是该方法的应用示例:
var arr = [1, 2, [3, 4, [5, 6]]];
console.log(flatten(arr)); // [1, 2, 3, 4, 5, 6]
拓展运算符
ES6中引入了拓展运算符...
,可以非常方便地将一个多维数组转换成一维数组。
function flatten(arr) {
while (arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
该方法中我们使用[].concat(...arr)
的方式将多维数组转换成一维数组,当该数组中还有嵌套数组时,我们继续使用该方法进行扁平化操作。
以下是该方法的应用示例:
var arr = [1, 2, [3, 4, [5, 6]]];
console.log(flatten(arr)); // [1, 2, 3, 4, 5, 6]
使用reduce方法
reduce()
方法可以在遍历数组时累积数组中的元素,并最终返回一个值。
function flatten(arr) {
return arr.reduce(function(prev, next) {
return prev.concat(Array.isArray(next) ? flatten(next) : next);
}, []);
}
该方法中,我们遍历数组中的每个元素,如果元素是嵌套数组,则递归调用flatten()
函数,并将扁平化后的结果添加到累积的数组中。
以下是该方法的应用示例:
var arr = [1, 2, [3, 4, [5, 6]]];
console.log(flatten(arr)); // [1, 2, 3, 4, 5, 6]
以上三种方法均能将多维数组扁平化为一维数组,可以根据具体应用场景选择不同的方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Js数组扁平化实现方法代码总汇 - Python技术站