// 数组扁平化
let arr = [1, 2, [3, 4, 5, [6, 7], 8], 9, 10, [11, [12, 13]]];
// 方式一 flat(参数) 参数:深度 Infinity:正无穷大
console.log(arr.flat(Infinity));
// 方式二 效果:每次都创建一个数组:[total + value]
function array(arr) {
return arr.reduce((total, value) => {
return [].concat(
// 第一个判断避免首个数也是数组嵌套
Array.isArray(total) ? array(total) : total,
Array.isArray(value) ? array(value) : value
);
});
}
console.log(array(arr));
// 方式二·真实 效果只创建一个数组:[total + value1 + value2 + ······]
function array(arr) {
return arr.reduce((total, value) => {
return total.concat(Array.isArray(value) ? array(value) : value);
}, []);
}
console.log(array(arr));
//数组的reduce
/**
* @params callback 函数的形参
* **/
// Array.prototype.myreduce = function (callback) {
// console.log(this); //[1, 2, 3]
// let array = this;
// let now = array[0];
// for (let i = 1; i < array.length; i++) {
// now = callback(now, array[i]);
// }
// return now;
// };
// let all = [1, 2, 3].myreduce((tole, value) => {
// return tole * value;
// });
// console.log(all);
// 方法三 将数组转化成字符串再转化为数组
function array(arr) {
return arr
.join(",")
.split(",")
.map((item) => {
return parseInt(item);
});
}
console.log(array(arr));