微信小程序数组操作find,filter查找特定值 - 掘金

来源: 微信小程序数组操作find,filter查找特定值 – 掘金

写小程序的时候用到过一个方法,js.find()和js.filter(),他们的用途都是过滤筛选出符合我们特定值的数据。但两者的用法也有些区别。

首先我们来看一下js.find()使用方法。代码含义是指从getGameListData.data.data.这个数组中筛选出和this.data.searchInfo的值相等的第一项。注意是他只能筛选出一个,返回值是字符串,如果没有则是undefined。

需要注意的点:

find() 对于空数组,函数是不会执行的。

find() 并没有改变数组的原始值。

find() 只能筛选出符合条件的第一项

// 定义一个需要被查找的数组
var memoList = [{ id: 1, name:  '1'},
                   {id: 2, name:  '2'},
                   {id: 3, name:  '3'}]

// 用 editItem 变量将 查找出来的数据进行接收`

var` `editItem = memoList.find((ele) => {
                        return  ele.id == 2
                        })   

// 打印 editItem 得到的结果是 {id: 2, name: '2'}
复制代码
  let test = [1, 2, 3, 4, 5];
        let a = test.find(item => item > 3);
        console.log(a); //4

let b = test.find(item => item == 0);
        console.log(b); //undefined
复制代码

下面是在小程序中写的代码

 let game = getGameListData.data.data.find(item=>{
    return item.gamename.indexOf(this.data.searchInfo) !==-1
  })
复制代码

然后再来看看filter。代码含义是指从searchInputInfo中筛选出所有和searchInfo相等的数据。其返回值也是一个数组。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。

var arr = ['A', 'B', 'C'];\
var r = arr.filter(function (element, index, self) {undefined\
    console.log(element); // 依次打印'A', 'B', 'C'\
    console.log(index); // 依次打印0, 1, 2\
    console.log(self); // self就是变量arr\
    return true;\
});
复制代码

下面是在小程序中写的代码

    let filterNum = searchInputInfo.filter(item=>{
      return item.name.indexOf(searchInfo) !==-1
    })
复制代码

那么我们再来看看如何通过map遍历来拿到我们需要的值吧,该函数调用时,map方法向它传入三个参数:当前值、当前位置和数组本身。

var a=11,
arr=[11,22,33]
arr.map(function(elem,index,array){
    if(elem==a){
        console.log(elem);
    }
})
复制代码

很简单,方法也有很多种。好啦,明天再来讲一下微信小程序如何调取支付接口。

作者:谁都别管
链接:https://juejin.cn/post/7062965728386744328
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏