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"]