js学习笔记--数组对象操作

数组对象求交集

​ list1与 list2 的交集,与list1,list2的顺序无关

let list1 = [{id:1,name:'aaa'},{id:2,name:'bbb'}]
let list2 = [{id:1,name:'aaa'},{id:2,name:'bbb'},{id:3,name:'bbb'}]
let arrIds = list2.map(item => item.id); // 取唯一的标识
let result = list1.filter(item => arrIds.includes(item.id))
// result = [{id: 1, name: "aaa"},{id: 2, name: "bbb"}]

数组对象求差集

​ 数据多的使用filter

let list1 = [{id:1,name:'aaa'},{id:2,name:'bbb'}]
let list2 = [{id:1,name:'aaa'},{id:2,name:'bbb'},{id:3,name:'bbb'}]

let result = list2.filter(e=>{
	var str = JSON.stringify(e)
    return list1.every(e=>JSON.stringify(e)!=str);
})
// result = [{id: 3, name: "bbb"}]

数组对象去重

​ 对list去重,唯一标识id

noRepect(list){ //去重
   let hash = {}
   return list.reduce((preVal, curVal) => {
       hash[curVal.id] ? '' : hash[curVal.id] = true && preVal.push(curVal)
       return preVal 
   }, [])  
}

数组对象统计个数并去重

   getSelectListInfo(val){
      let result = []
      
      let arr = []
      val.map(i => {
        arr.push(i.name)
      })	//提取需要统计的元素
		
	  // 放到map对象中进行统计
      let map = arr.reduce((m, x) => m.set(x, (m.get(x) || 0) + 1), new Map())
      
      map.forEach((value, key)=>{
        result.push({
          text: key,
          num: value
        })
      }) //取值结果 [{text: '...', num: '...'}, ...]
      
      return result
    },

数组对象真正去重

let obj = {}
point = point.reduce((sum, current) => {
   if (!obj[JSON.stringify(current)]) {
      obj[JSON.stringify(current)] = true
      sum.push(current)
    }
    return sum
}, [])

数组对象排序

let list = [{id:3,name:'ccc'},{id:1,name:'aaa'},{id:2,name:'bbb'}]

list.sort((a,b) => {
    return a.id - b.id
})	//从小到大排序,也可以是字符串(按字母顺序排)
// list = [{id:1,name:'aaa'},{id:2,name:'bbb'},{id:3,name:'ccc'}]

匹配数组对象

for (const key in this.ruleFormData) {
     this.ruleFormData[key] = data[key]
}
// this.ruleFormData 去匹配 data
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值