美文网首页
filter的用法详解

filter的用法详解

作者: 付出的前端路 | 来源:发表于2018-01-15 16:25 被阅读0次

filter

定义

filter 为数组中的每个元素调用一次 callback 函数,并利用所有使得" callback 返回 true 或 等价于 true 的值 的元素"创建一个新数组。

var new_array = arr.filter(callback[, thisArg])
基础用法
let spread = [12, 5, 8, 130, 44]
let filtered = spread.filter(n => n >= 10)
console.log('filtered', filtered) // => [12, 130, 44]
进阶用法

数组对象的键名/键值的搜索

let users = [
  { 'user': 'barney', 'age': 36, 'active': true },
  { 'user': 'fred',   'age': 40, 'active': false },
  { 'user': 'ared',   'age': 24, 'active': false },
  { 'user': 'ered',   'age': 80, 'active': false },
  { 'abc': 'ered',   'age': 80, 'active': false }
]
var filtered = users.filter(n => n.age===40 || n.age===24)
console.log('filter后的键名', filtered)   // => [{user: "fred", age: 40, active: false},{user: "ared", age: 24, active: false}]
高阶用法

数组去重

let spread = [12, 5, 8, 8, 130, 44,130]
let filtered = spread.filter((item, idx, arr) => {
  return arr.indexOf(item) === idx;
})
console.log('数组去重结果', filtered)

数组中的空字符串删掉

let spread = ['A', '', 'B', null, undefined, 'C', '  ']
let filtered = spread.filter((item, idx, arr) => {
  return item && item.trim()
})
console.log('数组中的空字符串删掉', filtered) // => ["A", "B", "C"]

总结:充分利用callback返回true的特点当作"过滤条件"函数,生产新的数组

filter的常用搭配

有条件筛选数组并生成新的数组
filter与map的搭配使用(可代替for + continue 的使用)
代码演示:
filter +map 写法

let arr = [{
  gender: 'man',
  name: 'john'
}, {
  gender: 'woman',
  name: 'mark'
}, {
  gender: 'man',
  name: 'jerry'
}]
// filter : 有条件的筛选
// 筛选出性别为男性的名字集合
let newArr = arr.filter(n => n.gender === 'man').map(item => {
  return {
    name: item.name
  }
})
console.log('男性名字集合', newArr)   // => [{name: 'john'}, {name: 'jerry'}]

for + continue 写法

let forArr = []
  for (let i = 0; i < arr.length; i++) {
    if (arr[i].gender === 'woman') continue
    let temp = {
      name: arr[i].name
    }
    forArr.push(temp)
  }
console.log('for循环过滤后的数组', forArr) // => [{name: 'john'}, {name: 'jerry'}]

相关文章

  • filter的用法详解

    filter 定义 filter 为数组中的每个元素调用一次 callback 函数,并利用所有使得" callb...

  • AngularJS的Filter用法详解

    Filter简介 Filter是用来格式化数据用的。Filter的基本原型( '|' 类似于Linux中的管道模式...

  • AngularJS的Filter用法详解

    Filter简介 Filter是用来格式化数据用的。Filter的基本原型( '|' 类似于Linux中的管道模式...

  • 2018-08-14

    filter用法: filter()用法和map()函数相同,可以接收函数和序列,不同的是filter可以主动进行...

  • IOS学习(13)-UITextView

    UITextView详解iOS开发系列之四 – UITextView 用法小结UITextView控件的用法详解

  • LiveData

    LiveDataBus实现原理#用法详解#LiveData扩展 LiveDataBus实现原理#用法详解#Live...

  • Retrofit 入门

    Retrofit用法详解 参考:Retrofit 官方APIRetrofit用法详解(入门看这篇就够了) 一、简介...

  • javascript中filter的用法

    javascript中filter的用法 filter filter也是一个常用的操作,它用于把Array的某些元...

  • Activity详解(二)

    本篇主要介绍内容;Intent详解;Intent filter匹配规则; 一、Intent详解 Intent:在A...

  • js 高阶函数

    filter map reduce filter 高阶函数的用法 filter 中的回调函数有一个要求:必须返回...

网友评论

      本文标题:filter的用法详解

      本文链接:https://www.haomeiwen.com/subject/plldoxtx.html