数组练习

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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值