let res = arr.toString().split(',').map(item => Number(item))
3、JSON.stringify也可以扁平化数组,但是还存在中括号,再用replace替换掉即可
let res = JSON.stringify(arr).replace(/(\[|\])/g, '')
console.log(res);
res = res.split(',').map(item => Number(item))
4、基于数组的some方法进行判断检测
// find 和 some 的区别:some返回的是boolean,find找到符合规则的就返回当前这一项,没找到的返回underfind
// Array.isArray ([val]) : 检测某个值是否为数组类型
while ( arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr)
/}
5、 自定义递归处理扁平
~function () {
function myflat() {
let res = [],
_this = this
let fn = (arr) => {
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
fn(arr[i])
continue
}
res.push(arr[i])
}
}
fn(_this)
return res
}
Array.prototype.myflat = myflat
}()
数组去重
1、简单的去重方法
//新建一新数组,遍历传入数组,值不在新数组就push进该新数组中
//IE8以下不支持数组的indexOf方法
function uniq(array){
var temp = []; //一个新的临时数组
for(var i = 0; i < array.length; i++){
if(temp.indexOf(array[i]) == -1){
temp.push(array[i]);
}
}
return temp;
}
2.排序后相邻去除法
/*
* 给传入数组排序,排序后相同值相邻,
* 然后遍历时,新数组只加入不与前一值重复的值。
* 会打乱原来数组的顺序
* */
function uniq(array){
array.sort();
var temp=[array[0]];
for(var i = 1; i < array.length; i++){
if( array[i] !== temp[temp.length-1]){
temp.push(array[i]);
}
}
return temp;
}
3.数组下标法
function uniq(array){
var temp = [];
for(var i = 0; i < array.length; i++) {
//如果当前数组的第i项在当前数组中第一次出现的位置是i,才存入数组;否则代表是重复的
if(array.indexOf(array[i]) == i){
temp.push(array[i])
}
}
return temp;
}