常用的数组对象处理方法
1.数组对象根据对象里面的key值去重
* @description 数组对象去重
* @arr 数组对象[{a:1,b:2},{a:1,b:2}]
* @uniId 去重的依据,即key
* return 不改变原数组,返回新的数组
*/
uniqueFunc(arr, uniId) {
const res = new Map();
return arr.filter((item) => !res.has(item[uniId]) && res.set(item[uniId], 1));
}
2.数组去重
例:将下面数组去除重复元素(以多种数据类型为例)
const arr = [1, 2, 2, 'abc', 'abc', true, true, false, false, undefined, undefined, NaN, NaN]
2.1 利用Set()+Array.from()
Set
对象:是值的集合,你可以按照插入的顺序迭代它的元素。 Set中的元素只会出现一次,即Set中的元素是唯一的。Array.from()
方法:对一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。
const result = Array.from(new Set(arr))
console.log(result) // [ 1, 2, 'abc', true, false, undefined, NaN ]
2.2 利用数组的indexOf方法
indexOf()
方法:返回调用它的String对象中第一次出现的指定值的索引,从 fromIndex
处进行搜索。如果未找到该值,则返回 -1
function removeDuplicate(arr) {
const newArr = []
arr.forEach(item => {
if (newArr.indexOf(item) === -1) {
newArr.push(item)
}
})
return newArr // 返回一个新数组
}
const result = removeDuplicate(arr)
console.log(result) // [ 1, 2, 'abc', true, false, undefined, NaN, NaN ]
3.数组对象
根据对象的某个key值排序
const arr=[
{age:1,name:"虾米"},
{age:6,name:"螃蟹"},
{age:4,name:"鲨鱼"}
]
/**
*@description降序或者升序函数
*@flag flag===true 升序 否则降序
*@key 需要排序的 key
* 没有返回值,会改变原数组
*/
function sortArr(arr,flag,key){
if(flag){
arr.sort((a,b)=>a[key]-b[key])
}else{
arr.sort((a,b)=>b[key]-a[key])
}
}
//使用
sortArr(arr,true,'age') //升序 得到arr=[{age:1,name:"虾米"},{age:4,name:"鲨鱼"}, {age:6,name:"螃蟹"}]
sortArr(arr,false,'age') //降序 得到arr=[{age:6,name:"螃蟹"},{age:4,name:"鲨鱼"},{age:1,name:"虾米"}]