JS常用数组操作

239 阅读2分钟

工作中遇到很多次关于数组的操作,有百度有自己想,然后总结一篇关于数组的操作,也方便以后查哈哈哈

-ES6中对数组的操作

1、扩展运算符的用处:

一般情况下,对arr2操作同时会影响arr1,运用扩展运算符之后:
let arr1=['1','2','3'];
//let arr2=arr1;
let arr2=[...arr1];
console.log(arr2);
arr2.push('4');
console.log(arr2);//["1", "2", "3", "4"]
console.log(arr1);////["1", "2", "3"]

-数组取最大最小值:

1、对象数组

取最大值
Math.max.apply(Math, array.map(function(o) {return o.value}))
取最小值
Math.min.apply(Math, array.map(function(o) {return o.value}))

2、普通数组

在ES5中,使用Math.max函数的apply方法获取数组最大值
Math.max.apply(null, [-1, 1, 1001, -52]); // 1001
在ES6中, 我们使用扩展符作为函数的参数
Math.max(...[-1, 1, 1001, -52]); // 1001

-js数组filter方法与find方法:

1、filter() 方法将匹配元素集合缩减为匹配指定选择器的元素.该方法不改变原数组,返回的是筛选后满足条件的数组.
eg:
var arr= cityList.filter(function(item){
    return item.cityCode == sendCityCode; 
})//arr为数组

2、find() 方法返回的是筛选后满足条件的对象.
eg:
var obj=arr.find(function (x) {
    return x.id === 1
})//obj为对象

-对象的合并去重

1、普通数组

let arr1 = [3,5,2,3,6];
let arr2 = [5,2,4,6,8,7,9,2];
let arr = arr1.concat(arr2);  //合并数组
let arrNew= new Set(arr); //通过set集合去重
 
console.log("arrNew",Array.from(arrNew)); //Array.from()方法可以将Set数据类型转化为数组类型。

2、对象数组

let json1=[
	{id:1,name:"aaa"},
	{id:2,name:"bbb"},
	{id:3,name:"ccc"},
] 
 
let json2=[
	{id:1,name:"aaa"},
	{id:2,name:"bbb"},
	{id:4,name:"ddd"},
]
 
let json = json1.concat(json2); //两个数组对象合并
let newJson = []; //盛放去重后数据的新数组
for(item1 of json){  //循环json数组对象的内容
    let flag = true;  //建立标记,判断数据是否重复,true为不重复
    for(item2 of newJson){  //循环新数组的内容
        if(item1.id==item2.id){ //让json数组对象的内容与新数组的内容作比较,相同的话,改变标记为false
            flag = false;
	   }
	}

    if(flag){ //判断是否重复
        newJson.push(item1); //不重复的放入新数组。  新数组的内容会继续进行上边的循环。
    }
}
 
console.log("newJson",newJson);