1. 给一个有序的数组,乱序
var arr=[1,2,3,4,5,6]
arr.sort(function(){
return Math.random()-0.5;
//返回(0,1)之间的随机数-0.5时正负也是随机的
})
2. 下列对象按年龄 升序排列
var cc = {name: "cc", age:18,}
var bb = {name: "bb", age: 16,}
var aa = {name: "aa", age: 24,}
var arr = [cc, bb, aa];
arr.sort(function (a, b) {
return a.age - b.age;
})
3. 按字符串长度排序
var arr=["aaa","ccss","a","aaddf","sddjif","shaihodv"];
arr.sort(function(a,b){
return a.length-b.length;
})
4. 按字节长度排序
function retBytes(str){ //写一个方法
var num=str.length;
for(var i=0;i<str.length;i++){
if(str.charCodeAt(i)>255){
num++;
}
}
return num;
}
arr=["a车车","cc车车s","车车","车车addf","车ddjif","shaihodv"];
arr.sort(function(a,b){
return retBytes(a)-retBytes(b);
})
5. 数组去重
(1)在原型链上编程
Array.prototype.unique=function(){
var temp={},
arr=[];
for (var i=0;i<this.length;i++){
if(!temp[this[i]]){
temp[this[i]]="cc";
arr.push(this[i]);
}
}
return arr;
}
(2)es6 方法
let arr = [1,2,4,1,5,2]
let unique = [...new Set(arr)] // [ 1, 2, 4, 5 ]
6. 数组扁平化
对于[1, [1,2], [1,2,3]]这样多层嵌套的数组,我们如何将其扁平化为[1, 1, 2, 1, 2, 3]这样的一维数组
(1)ES6的flat()
var newArr = arr.flat(Infinity)
(2)序列化后正则
const str = `[${JSON.stringify(arr).replace(/(\[|\])/g,'')}]`
// "[1,1,2,1,2,3]"
const newArr = JSON.parse(str)
// [1, 1, 2, 1, 2, 3]
(3)递归
function flat(arr) {
let result = []
for(const item of arr) {
item instanceof Array ? result = result.concat(flat(item)) : result.push(item)
}
return result
}
var newArr = flat(arr)
(4)reduce()递归
function flat(arr) {
return arr.reduce((prev,cur) => {
return prev.concat(cur instanceof Array ? flat(cur) : cur)
},[])
}
var newArr = flat(arr)
(5)迭代+展开运算符
while (arr.some(Array.isArray)) {
arr = [].concat(...arr);
}