js 数组filter 总结

filter过滤数组

filter()
1.方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素
2.不会改变原始数组

var arr = [
  { id: 1, text: 'aa', done: true },
  { id: 2, text: 'bb', done: false }
]
console.log(arr.filter(item => item.done))

转成ES5

arr.filter(function (item) {
  return item.done;
});

return后面判断结果,取布尔值,true的话就添入新的filter数组中,false的话,不会添进filter的数组中。

最后得到新的数组是

[{id: 1, text: "aa", done: true}]
var arr = [
  { id: 1, text: 'aa', done: true },
  { id: 2, text: 'bb', done: '' }
]
console.log(arr.filter(item => item.done))

结果还是一样,因为”空字符串转成布尔类型为false

用处

1.去掉数组中的空字符串项

var arr = ['1.jpg','2.jpg','', '3.jpg',' ']
var newArr = arr.filter(item => item)
console.log(newArr,arr)
newArr => ["1.jpg", "2.jpg", "3.jpg", " "]   空字符串项被过滤掉了
arr => ["1.jpg", "2.jpg", "", "3.jpg", " "]

2.去掉数组中不符合的项

var arr = [73,84,56, 22,100]
var newArr = arr.filter(item => item>80)   //得到新数组 [84, 100] 
console.log(newArr,arr)
var arr = ['aa','cb','cc', 'bd','rf']
var newArr = arr.filter(item => item.indexOf('b')<0) 不包含b字符串的

得到新数组 ["aa", "cc", "rf"] 

猜你喜欢

转载自blog.csdn.net/cofecode/article/details/79171643