原文:Array filter()
in JavaScript
JavaScript的数组函数filter()
可以筛选出符合指定条件的数组元素,本文简述该函数的使用。
Array#filter()
函数接收一个callback
回调函数,返回一个新的数组,其中的元素在callback
函数中返回值为真值。
1 2 3 4 5 6 7 8 9
| const numbers = [1, 2, 3, 4, 5, 6];
let callback = v => v % 2 === 0; const even = numbers.filter(callback); even;
callback = v => v % 2 === 1; const odd = numbers.filter(callback); odd;
|
注意:filter()
返回的是新数组,它不会修改原数组。
1 2 3 4 5
| even === numbers; odd === numbers; even === odd;
numbers.length;
|
filter()
有点像浅拷贝:它只是克隆了顶层的数组,而嵌套的对象不会改变。
1 2 3 4 5 6 7 8 9 10 11 12 13
| const people = [ { name: 'Jean-Luc Picard', rank: 'Captain' }, { name: 'Will Riker', rank: 'Commander' }, { name: 'Geordi La Forge', rank: 'Lieutenant' } ];
const filtered = people.filter(p => p.rank === 'Lieutenant');
filtered[0] === people[2]; filtered[0].rank = 'Lieutenant Commander'; people[2].rank;
|