js数组对象操作

这篇博客介绍了JavaScript中处理数组的几种常见方法,包括:利用Set和Map检查对象属性是否有重复值,使用filter去重,reduce进行累加,以及通过比较属性值来判断数组对象是否全等。此外,还提供了一个去除数组对象中多个属性值相同的数据的示例,以及使用filter去重的基本用法。这些技巧对于优化数组处理和数据清洗至关重要。

 一、js判断数组对象中某一个属性是否含有相同值,使用set和map实现

xiang:[
  {xmmc:'*供电*电费',xh:'22'},
  {xmmc:'*供电*电费',xh:'33'},
  {xmmc:'*经营租赁*仓库租赁费',xh:'33'},
]
  
        let names = xiang.map(item => item["xmmc"]);
        let nameSet = new Set(names);
        console.log(names,nameSet)
        if(nameSet.size < names.length){
            this.$message.error('含有相同费用项!')
            return false
        }

打印出来的names和nameSet值 

//原始的names
0: "*供电*电费"
1: "*供电*电费"
length: 2


//去重后的结果nameSet
_c: Set(1) {'*供电*电费'}
size: 1

二、 获取数组对象中某个属性id,并去重

//获取所有的id 
let conArr=res.data.data.kpSettleList.map(item=>{
            return item.contractId
    })
let contractIds=conArr.filter((item,index)=>conArr.indexOf(item) === index)//获取去重后的数组

三、数组reduce累加

hjHsje=Arr.length=='1'?Arr[0].hsje : (Arr.map( row=>row.hsje).reduce((acc, cur) => (parseFloat(cur) + acc), 0)).toFixed(2)

四、js判断数组对象中某个属性的值是否相等

function isAllEqual(arr){
  if(arr.length>0){
    return !arr.some(function(value,index){
      return value !==arr[0];
    });
  }
  else{
     return true;
  }
}


isAllEqual([7,7,7,7])   //true
isAllEqual([1,2,3,1,1])  //false

五、数组对象中对多个属性值相同的数据去重

dataArr: [
    {
        id:1,
        locnCode:'E-02',
        itemCode: '801',
        name: '名称1',
        date:'2023-01-12 00:00:01'
    },
    {
      id:2,
        locnCode:'E-02',
        itemCode: '801',
        name: '名称2',
        date:'2023-01-12 00:00:00'
    },
    {
      id:3,
      locnCode:'E-02',
        itemCode: '802',
        name: '名称3',
        date:'2023-01-12 00:00:00'
    },
    {
      id:4,
      locnCode:'E-02',
        itemCode: '801',
        name: '名称4',
        date:'2023-01-12 00:00:00'
    }
]
quchong(){
      let arr2=[]
      let arr1=[]
      for (let i = 0; i < this.dataArr.length; i++) {
        if (!(arr1.includes(this.dataArr[i].itemCode + '-' + this.dataArr[i].locnCode+ '-' + this.dataArr[i].date))) { 
            // 数组中没有就往里添加
            arr1.push(this.dataArr[i].itemCode + '-' + this.dataArr[i].locnCode + '-' + this.dataArr[i].date)
            arr2.push(this.dataArr[i])
        }
      }
      console.log(arr1,777)
      console.log(arr2,888)
    },

六、filter()对数组去重


	    let arr5 = ['11', 'aaa', 'bb', 'aaa', 'bb']
	    let arr6 = []
	    arr6 = arr5.filter((item, index, self) => {
	        return self.indexOf(item) === index
	    })
	    console.log(arr6) // ["11", "aaa", "bb"]

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~犇犇~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值