reduce方法
语法:
arr.reduce(function(total,current,index,array){
}, init);
参数说明
total :初始值 init ,或者计算结束后的返回值 (必需)
init:初始值(必需)
current,当前元素(可选)
index:当前元素索引(可选)
array:当前元素所属的数组对象(可选)
数组去重
var arr = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5];
var newArr = arr.reduce(function (total, current) {
//indexOf方法 没有检索到对应的值,则该方法返回-1
//&&为取假短路运算,前面为true的话,则运行后面的方法 将当前元素push进返回值中
total.indexOf(current) === -1 && total.push(current);
return total; //返回运算结果
}, []);
console.log("输出结果", newArr);// [1, 2, 3, 4, 5]
对象去重
let obj = [{dynasty:"唐"}, {dynasty:"宋"}, {dynasty:"汉"},{dynasty:"宋"},{dynasty:"唐"}];
let newObj = obj.reduce(function (total, current) {
//JSON.stringify 转为json字符串才可以使用indeOf方法检索
JSON.stringify(total).indexOf(current.dynasty)===-1 && total.push(current)
return total;
}, []);
console.log("输出结果",newObj); // [{dynasty: "唐"},{dynasty: "宋"},{dynasty: "汉"}]