JavaScript中的map()、findIndex()和some()处理数组

1、map()定义和用法:

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

map() 方法按照原始数组元素顺序依次处理元素。

注意: map() 不会对空数组进行检测。

注意: map() 不会改变原始数组。

        that.checkOrderList = that.orders.map(res => {
          return res.wxId;
        });

map()对数组进行了处理,把处理后的数组赋值给新的数组,这里是只要了返回值的Id给新数组,不要其他字段。

也可以更加复杂处理,比如:

that.studentsList = res.map(item => {
    return {
        name: item.name,
        sex: item.sex === 1? '男':item.sex === 0?'女':'保密',
        age: item.age,
        avatar: item.img
    }
});
that.studentsList = res.map(item => {
        name: item.name,
        sex: item.sex === 1? '男':item.sex === 0?'女':'保密',
        age: item.age,
        avatar: item.img
});

两段代码是一样的,可以省略掉return。


2、findIndex()方法的定义和用法:

findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置。

findIndex() 方法为数组中的每个元素都调用一次函数执行:

当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。

如果没有符合条件的元素返回 -1

注意: findIndex() 对于空数组,函数是不会执行的。

注意: findIndex() 并没有改变数组的原始值。

特别注意的是,返回的是元素的索引,不是返回了元素。最终处理可以回调一个方法,或者拿到索引后拿着索引处理。

        let index = that.orders.findIndex(item =>{
          if(item.id==that.tempOrderId){
            return true
          }
        })
        that.orders.splice(index,1)

//that.tempOrderId为传入的条件id,这段代码是显示已付款商品的页面中的代码,可以选中一个订单,点击发货后,把此订单在这个页面中的显示剔除。

这段代码还可以改为回调:

function checkOrder(order) {
    return order.it == that.tempOrderId;
}
//that.tempOrderId为传入的条件id
let index = this.orders.findIndex(checkOrder);
that.orders.splice(index, 1);

3、some()方法用法和定义:

some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。

some() 方法会依次执行数组的每个元素: 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。 如果没有满足条件的元素,则返回false。

注意: some() 不会对空数组进行检测。

注意: some() 不会改变原始数组。

          that.orders.some((item, i) => {
            if (item.wxId == that.tempOrderId) {
              that.orders.splice(i, 1);
              console.log(item.wxId);
              return true;
            }
          });

同样也是可以使用回调的,可以跟findIndex()方法做比较对应,他们不同点是findIndex是去找到index,而some是找到了在内部就处理。

4、过滤指定条件的数据:

          this.shopInfos=response.list.filter((item,index)=>{
              return item.special=='1'
          })

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值