js数组操作总结

1、对象数组去重

let arr = [
    {"value":"001",name:"张三"},
    {"value":"002",name:"李四"},
    {"value":"003",name:"王五"},
    {"value":"001",name:"张三"}
]
方法一:
function getUnique(arr) {
      const res = new Map()
      return arr.filter((item) => !res.has(item.value) && res.set(item.value, 1))
}
方法二:
function getUnique(arr) {
    let hash = {};
    let newArr = arr.reduce((item, next)=>{
            hash[next.key] ? '' : hash[next.key] = true && item.push(next);
            return item;
     },[])
    return newArr
}

结果:[{"value":"001",name:"张三"},{"value":"002",name:"李四"}, {"value":"003",name:"王五"}]

2、返回满足条件的对象

var arr=[
{id:1,name:'张三'},
{id:2,name:'李四'},
{id:3,name:'王五'},
{id:2,name:'赵六'}
]
arr.find( t=> t.id==‘2’)

结果(返回第一个满足条件的对象):{id:2,name:‘李四’}

3、返回满足条件的对象数组

var arr=[
{id:1,name:'张三'},
{id:2,name:'李四'},
{id:3,name:'王五'},
{id:2,name:'赵六'}
]
arr.filter( t=> t.id==‘2’)

结果(返回符合条件的所有对象):[{id:2,name:‘李四’},{id:2,name:‘赵六’}]

4、遍历对象数组返回true或者false

var arr=[
{id:1,name:'张三'},
{id:2,name:'李四'},
{id:3,name:'王五'},
{id:2,name:'赵六'}
]
var result = arr.some(item=>item.name==='王五')

结果(如果arr数组对象中含有name:'王五',就会返回true,否则返回false):true

5、遍历数组的方式:

var arr=["张三","李四","王五","赵六"]
1、for(var i=0;i<arr.length;i++){
        console.log(arr[i])
   }
2、for(var i in arr){//es5标准
        console.log(arr[i])
   }
3、for(let i of arr){//es6标准
        console.log(i)
   }
4、arr.forEach((item,index) =>{
        console.log(item)
   })
5、arr.map((item,index) =>{
        console.log(item)
   })
6、let i=0;
   while(arr[i]){
        console.log(arr[i])
        i++
   }

结果(遍历对象数组方法同上):张三   李四   王五  赵六

6、数组元素求和

1、let arr = [1,2,3,4,5,6]
   let sum = arr.reduce((pre, cur) => pre + cur)
   console.log(sum)

结果:21

7、对象数组元素求和

let arr = [{value:1},{value:2},{value:3}]
let sum = arr.reduce((pre, cur) => {return pre + cur.value}, 0)
console.log(sum)

结果:6

8、数组去重

let arr = [1,2,3,2,4,1,5]
let newArr = arr.reduce((pre, cur) => {
    return pre.includes(cur) ? pre : pre.concat(cur)
}, [])
console.log(newArr)

结果:[1,2,3,4,5]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

LOVE_tenYear

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

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

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

打赏作者

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

抵扣说明:

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

余额充值