* 对象数组去重
1. reduce()
// 测试数据
// 比如我们处理 value 的去重
var arrList = [
{key: 1, value: "aaa"},
{key: 2, value: "bbb"},
{key: 3, value: "ccc"},
{key: 4, value: "aaa"},
{key: 5, value: "aaa"},
{key: 6, value: "ddd"},
];
/**
* 数组对象去重
* 设置cur默认类型为数组,并且初始值为空的数组
*/
let obj = {};
arrList = arrList.reduce((cur,next) => {
obj[next.value] ? "" : obj[next.value] = true && cur.push(next);
return cur;
},[]);
// 这里得出去重后的数据
console.log(arrList);
复制代码
–reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
语法
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
参数 描述
total 必需。初始值, 或者计算结束后的返回值。
currentValue 必需。当前元素
currentIndex 可选。当前元素的索引
arr 可选。当前元素所属的数组对象。
initialValue 可选。传递给函数的初始值
1、格式:
array.reduce(function(total, currentValue, index, arr){
// total: 累积变量,默认为数组的第一个成员
// currentValue: 当前变量,默认为数组的第二个成员
// index: 当前位置(从0开始)
// arr: 原数组
}, 默认值初始值)
2、案例
[1, 2, 3, 4, 5].reduce(function (a, b) {
return a + b;
})
// 1 2
// 3 3
// 6 4
// 10 5
//最后结果:15
复制代码
1. concat–合并数组
const arr1 = [1,2,3]
const arr2 = [4,5,6]
const arr3 = arr1.concat(arr2)console.log(arr3) // [1,2,3,4,5,6]
复制代码
2. sort–数组排序
sort()会改变原有数组,按照unicode码进行排序
-
对象数组排序
var arr = [
{ name:”小明”, age:12 },
{ name:”小红”, age:11 },
{ name:”小刚”, age:15 },
{ name:”小华”, age:13 }
];function compare(p){ //这是比较函数
return function(m,n){
var a = m[p];
var b = n[p];
return a – b; //升序
}
}
arr.sort(compare(“age”));
console.log(arr);
//结果如下:
//[{name: “小红”, age: 11},
//{name: “小明”, age: 12},
//{name: “小华”, age: 13},
//{name: “小刚”, age: 15}] -
数组排序
不使用比较函数会出现下面这种情况,这并不是我们需要的结果
var arr = [2,3,13,17,4,19,1];
arr.sort() // 结果:[1, 13, 17, 19, 2, 3, 4]
复制代码
若想对数组按照大小进行排序,则需要在sort()方法中添加比较函数
var arr = [2,3,13,17,4,19,1];
arr.sort(function(a,b){ // 这是比较函数
return b - a; // 降序
})
console.log(arr) // 结果:[19, 17, 13, 4, 3, 2, 1]
复制代码
3. findIndex–数组判断满足条件返回索引
索引 0/1/2/3/4, 不满足返回 “ -1 ”
const arr = [1,2,3,4,5,6,7,8]
Let res = arr.findIndex(item => item >=7)
console.log(res) // 6
Let res2 = arr.findIndex(item =>10)
console.log(res) // -1
复制代码
4. join–将数组转换为字符串并返回
若果数组只有一个元素不反回分隔符
const arr = [1,2,3,4]
const arr1 = [null,1,undefined,2]
console.log(arr.join()) // '1,2,3,4'console.log(arr.join(‘')) // '1234'console.log(arr.join(‘-‘) // '1-2-3-4'console.log(arr1.join('’)) // ’11'
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END