filter总结

203 阅读1分钟

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