JS-数组操作

* 对象数组去重

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
喜欢就支持一下吧
点赞0 分享