一、普通数组去重
方法1
使用es6的Set()方法,代码量少,只要拿到数组一句话搞定,最快了
var arr = [1,2,3,3,1,4];
var arr2=Array.from(new Set(arr));
document.write(arr2);
方法2
基础操作
var arr = [1,2,3,3,1,4];
for(var i=0; i<arr.length; i++){
for(var j=i+1; j<arr.length; j++){
if( arr[i]===arr[j]){
arr.splice(j,1);
j--;
}
}
}
document.write(arr);
方法3
基础操作,使用数组的indexof判断某个值是否存在
let arr = [1,2,3,3,1,4];
let arr1=[]
for (let i = 0; i < arr.length; i++){
if (arr1.indexOf(arr[i])=== -1) { //检索的值没有出现,返回-1
arr1.push(arr[i]);
}
}
console.log(arr1);
方法4
(放这儿参考,有好心人可以给我说下方法四是什么意思,我现在理解不了)
let arr=[1,2,1,2,3,5,4,5,3,4,4,4,4];
let result = arr. sort() .reduce((init, current) => {
if (init.length === 0 || init[init.length - 1] !== current) {
init. push(current);
}
return init;
},[]);
console.log(result); //[1,2,3,4,5]
方法5
let arr = [1, 2, 2, 3, 4, 5, 5, 5, 6, 6, 6, 6];
let newArr = arr.filter((item, index, self) => self.indexOf(item) === index)
console.log(newArr)
二、对象数组去重
this.tagsList.push({
name: to.meta.title,
title: to.meta.title,
path: to.fullPath,
})
方法1
//利用对象访问属性的方法,判断对象中是否存在key
var result = [];
var obj = {};
this.tagsList.forEach(v => {
if(!obj[v.path]) {
result.push(v)
obj[v.path] = true
}
})
console.log(result);
this.tagsList=result;
方法2
//利用reduce方法遍历数组,reduce第一个参数是遍历需要执行的函数,第二个参数是item的初始值
let obj = {};
this.tagsList = this.tagsList.reduce((array, item) => {
obj[item.path] ? '' : obj[item.path] = true && array.push(item);
return array;
}, []);
三、数组对象排序
//针对数组的children中某属性排序
recursiveData(data) {
data.forEach(item => {
if (item.children.length > 0) {
item.children.sort((a, b) => {
return a.priority - b.priority
})
this.recursiveData(item.children)
}
})
},
const arrObj = [
{
age: 11,
name: '小红'
},
{
age: 10,
name: '小绿'
},
{
age: 20,
name: '小紫'
},
{
age: 8,
name: '小粉'
},
]
// 从大到小排序
arrObj.sort((a, b) => {
return b.age - a.age // 从小到大 -> a.age - b.age
})