工作中遇到很多次关于数组的操作,有百度有自己想,然后总结一篇关于数组的操作,也方便以后查哈哈哈
-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);