1. 数组对象之根据特定字段去重
需求: 数组对象去重
const arr = [
{ id: 1, name: 'aa', age: 16 },
{ id: 1, name: 'aa', age: 16 },
{ id: 3, name: 'cc', age: 20 },
{ id: 3, name: 'cc', age: 20 },
{ id: 2, name: 'bb', age: 18 },
{ id: 1, name: 'aa', age: 16 },
]
// 方法一
const newArr = arr.filter((ele, i, self) => {
const index = self.findIndex(item => {
return item.id === ele.id
})
return index === i
})
console.log(newArr)
// 方法二
function unique(arr) {
const res = new Map();
return arr.filter((a) => !res.has(a.id) && res.set(a.id, 1))
}
const newArr = unique(arr)
console.log(newArr)
有关数组处理的方法
function unique(arr) { //数组去重es6,最简单的方法,不支持对象
return Array.from(new Set(arr))
}
function equar(a, b) { //判断两个数组是否相同
if (a.length !== b.length) {
return false
} else {
for (let i = 0; i < a.length; i++) {
if (a[i] !== b[i]) {
return false
}
}
return true
}
}
Array.prototype.indexOf = function(val) { //获取数组中指定元素的索引位置
for (var i = 0; i < this.length; i++) {
if (this[i] == val) return i;
}
return -1;
};
Array.prototype.removeItem = function(val) { //删除数组指定元素
var index = this.indexOf(val);
if (index > -1) {
this.splice(index, 1);
}
};
2. 获取url链接参数
getUrlParam(name) {
// history 不带#号模式 获取url链接参数
let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
let r = window.location.search.substr(1).match(reg);
if (r != null) {
return unescape(r[2]);
}
return null;
},
getHashParameter(key) {
// hash 带#号模式 获取url链接参数
var arr = (location.hash || '').split('?')[1].split('&')
var params = {}
for (var i = 0; i < arr.length; i++) {
var data = arr[i].split('=')
if (data.length === 2) {
params[data[0]] = data[1]
}
}
return params[key]
},