filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素
返回值: 一个新的、由通过测试的元素组成的数组,如果没有任何数组元素通过测试,则返回空数组。
filter 不会改变原数组,它返回过滤后的新数组
语法: var newArray = arr.filter(callback(element[, index[, array]])[, thisArg])
1.最简单例子
let words = ['first', 'banana', 'chinese', 'challenge', 'render'];
words = words.filter(el => el.length> 5);
console.log(words); // ["banana", "chinese", "challenge", "render"]
2. 根据id去删除一个数组对象, 并返回。
let list = [
{
text: "文本1",
id: 1
},
{
text: "文本2",
id: 2
}
];
list = list.filter(item => {
if (item.id === 2) { return true }
})
// [{text: "文本2", id: 2}]
3. 根据筛选查询条件返回对应的数组
const fruits = ["apple", "banana", "grapes", "mango", "orange"];
function filterItems(arr, query) {
return arr.filter((el) => {
return el.toLowerCase().indexOf(query.toLowerCase()) > -1;
});
}
console.log(filterItems(fruits, "ap")); // ['apple', 'grapes']
console.log(filterItems(fruits, "an")); // ['banana', 'mango', 'orange']
4. 使用 filter() 创建具有非零 id 的元素的 json
var arr = [
{ id: 15 },
{ id: -1 },
{ id: 0 },
{ id: 3 },
{ id: 12.2 },
{},
{ id: null },
{ id: NaN },
{ id: "undefined" }
];
function filterItems(arr) {
return arr.filter(el => {
return (
el.id !== "undefined" &&
el.id !== null &&
typeof el.id === "number" &&
!isNaN(el.id) &&
el.id !== 0
);
});
}
// [{"id": 15}, {"id": -1}, {"id": 3}, {"id": 12.2}]