数组里面对象去重的4种方法
去重数据:(1)利用对象访问属性的方法,判断对象中是否存在keyvar result = [];var obj = {};for (var i = 0; i < arr.length; i++) {if (!obj[arr[i].key]) {result.push(arr[i]);obj[arr[i].key] = true;}}console.log(result); // [{ke..
去重数据:
(1)利用对象访问属性的方法,判断对象中是否存在key
var result = [];
var obj = {};
for (var i = 0; i < arr.length; i++) {
if (!obj[arr[i].key]) {
result.push(arr[i]);
obj[arr[i].key] = true;
}
}
console.log(result); // [{key: "01", value: "西施"},{key: "02", value: "王昭君"},{key: "03", value: "杨玉环"},{key: "04", value: "貂蝉"}]
(2)利用两层for循环和布尔值的方法进行去重
var result = [];
for (var i = 0; i < arr.length; i++) {
var flag = true;
for (var j = 0; j < result.length; j++) {
if (arr[i].key === result[j].key) {
flag = false;
}
}
if (flag) {
result.push(arr[i]);
}
}
console.log(result); // [{key: "01", value: "西施"},{key: "02", value: "王昭君"},{key: "03", value: "杨玉环"},{key: "04", value: "貂蝉"}]
(3)利用两层for循环和splice的方法进行去重,此方法会更改数组的原始数据
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (arr[i].key === arr[j].key) {
arr.splice(j, 1);
j = j - 1;
}
}
}
console.log(arr); // [{key: "01", value: "西施"},{key: "02", value: "王昭君"},{key: "03", value: "杨玉环"},{key: "04", value: "貂蝉"}]
(4)利用reduce方法遍历数组,reduce第一个参数是遍历需要执行的函数,第二个参数是item的初始值(ie9以下不支持此方法)
var obj = {};
arr = arr.reduce(function (item, next) {
obj[next.key] ? '' : obj[next.key] = true && item.push(next);
return item;
}, []);
console.log(arr); // [{key: "01", value: "西施"},{key: "02", value: "王昭君"},{key: "03", value: "杨玉环"},{key: "04", value: "貂蝉"}]
更多推荐
所有评论(0)