关于:数组扁平化
简单概念:将一个维度很深的数组 -------》展开成一维数组
我们先定义一个函数:判断是否为数组
function isArray(arr) {var arrStr = '[object Array]';return Object.prototype.toString.call(arr) == arrStr;
}
vue下一页。实现方式一:
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);}, []) }
实现方式四:一行代码 (es6)
const flattenNew = arr => arr.reduce((prev, next) => Object.prototype.toString.call(next) == '[object Array]' ? prev.concat(flattenNew(next)) : prev.concat(next), [])
js数组去重方法。