处理数据常用方法

处理数据常用方法

 let arr = [{ a: 1,b: 2,},{a: 1,b: 4},{a: 1,b: 9,}]
 let brr = [1,2,3,4,2,1,5]

数组去重

reduce

let obj = {};
arr = arr.reduce((current,next) => {
    obj[next.a] ? "" : obj[next.a] = true && current.push(next);
    return current;
},[])

new set

let res = new Set()
arr.filter((arr) => !res.has(arr.a) && res.add(arr.a, 1))

Array.from(new Set(arr))||
[...new Set(arr)]

new Map()

let res = new Map()
arr.filter((arr) => !res.has(arr.a) && res.set(arr.a, 1))

排序

var crr = [{id: 1},{id: 3},{id: 2},{id: 6},{id: 5},{id: 7}]
var compare = function(property) {
    return function(a,b) {
      var value1 = a[property];
      var value2 = b[property];
      return value1 - value2
 }
}
arr.sort(this.compare("id"))

合并

var drr = [{q:1,w:2},{q:3,w:1}],err=[{q:5,w:0}]
var aObj = {a:2,b:3},bObj = {a:4,b:5}
// 数组
[...drr,...err]
drr.concat(err)

//对象
Object.assign(aObj, bObj)

筛选

let aMap = arr.map(v=>v.b)
// [2,4,9]

let bFilter = arr.filter(v=>v.b<=4) 
// [{ a: 1, b: 2, }, { a: 1, b: 4, }]

let bFind = arr.find(v=>v.b<=4) 
// { a: 1, b: 2, }

判断是否存在

arr.some(v=>v.b<=4) // true
arr.every(v=>v.a==4) // true

brr.includes(2);// true
'dsfdgd'.includes(s);//true

数组拍平

思想:判断循环的元素是不是数组,是数组就再循环一次,不是数组就合并到准备的数组中

①// reduce实现
function fn(arr){
    return arr.reduce((prev,cur)=>{
        return prev.concat(Array.isArray(cur)?fn(cur):cur)
    },[])
}

②// 递归实现
function fn(arr){    
    let arr1 = []
    arr.forEach((val)=>{
        if(val instanceof Array){
            arr1 = arr1.concat(fn(val))
        }else{
            arr1.push(val)
        }
    })
    return arr1
}

③// flat
[1,2,[1,5,7]].flat(Infinity)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值