100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > js数组扁平化

js数组扁平化

时间:2024-02-08 18:46:38

相关推荐

js数组扁平化

关于:数组扁平化

简单概念:将一个维度很深的数组 -------》展开成一维数组

我们先定义一个函数:判断是否为数组

function isArray(arr) {var arrStr = '[object Array]';return Object.prototype.toString.call(arr) == arrStr;}

实现方式一:

function flatten(arr) {var arr = arr || [],resArr = [],len = arr.length;for (var i = 0; i < len; i++) {if (isArray(arr[i])) {resArr = resArr.concat(flatten(arr[i]));} else {resArr.push(arr[i])}}return resArr;}

实现方式二:

Array.prototype.flatten = function () {var resArr = [];// var len = this.length;// for(var i = 0; i < len; i++) {//if(isArray(this[i])) {// resArr = resArr.concat(this[i].flatten());//}else{// resArr.push(this[i])//}// }this.forEach(function (item) {Object.prototype.toString.call(item) == '[object Array]' ? resArr = resArr.concat(item.flatten()) : resArr.push(item);})return resArr;}

在数组原型上编程

实现方式三:

function newFlatten(arr) {var arr = arr || [];return arr.reduce(function (prev, next) {return Object.prototype.toString.call(next) == '[object Array]' ? prev.concat(newFlatten(next)) : prev.concat(next);}, [])}

通过数组的reduce方法

实现方式四:一行代码 (es6)

const flattenNew = arr => arr.reduce((prev, next) => Object.prototype.toString.call(next) == '[object Array]' ? prev.concat(flattenNew(next)) : prev.concat(next), [])

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。