扁平化n维数组
const flatten=(arr)=>{
while(arr.some((item)=>Array.isArray(item))){
arr=[].concat(...arr)
}
return arr;
}
console.log(flatten([1,23,[343,[567,4]]]))
ES10
const flatten=arr=>arr.flat(Infinity)
console.log(flatten([1, 23, [343, [567, 4]]]))
排序(除sort)
冒泡排序
Array.prototype.bubleSort=function () {
let arr=this,
len = arr.length;
for (let outer = len; outer >= 2; outer--) {
for (let inner = 0; inner <= outer - 1; inner++) {
if (arr[inner] > arr[inner + 1]) {
//升序
[arr[inner], arr[inner + 1]] = [arr[inner + 1], arr[inner]];
console.log([arr[inner], arr[inner + 1]]);
}
}
}
return arr;
}
[1,2,3,4].bubleSort() //[1,2,3,4]
选择排序(简洁明了)
Array.prototype.selectSort = function () {
let arr = this,len = arr.length;
for (let i = 0, len = arr.length; i < len; i++) {
for (let j = i, len = arr.length; j < len; j++) {
if (arr[i] > arr[j]) {
[arr[i], arr[j]] = [arr[j], arr[i]];
}
}
}
return arr;
}
console.log([1, 3, 3, 4,2].selectSort()) //[1,2,3,4]
最大值
// Math.max(10, 20); // 20
Math.max(...[1,2,3,4]) //4
Math.max.apply(this,[1,2,3,4]) //4
[1,2,3,4].reduce( (prev, cur,curIndex,arr)=> {
return Math.max(prev,cur);
},0) //4
判断是否包含该值
//ES6
[1,2,3].includes(4) //false
[1,2,3].indexOf(4) //-1 如果存在换回索引
[1, 2, 3].find((item)=>item===3)) //3 如果数组中无值返回undefined
[1, 2, 3].findIndex((item)=>item===3)) //2 如果数组中无值返回-1
[1,2,3].some(item=>{
return item===3
}) //true 如果不包含返回false
类数组转化
Array.prototype.slice.call(arguments) //arguments是类数组(伪数组)
Array.prototype.slice.apply(arguments)
Array.from(arguments)
[...arguments]
每一项设置值
[1,2,3].fill(false) //[false,false,false]
网友评论