Home  >  Article  >  Web Front-end  >  In-depth understanding of the filter() method in JavaScript (with code)

In-depth understanding of the filter() method in JavaScript (with code)

yulia
yuliaOriginal
2018-09-14 15:46:423305browse

What this article brings to you is the filter() method in JavaScript, which is also widely used in JavaScript. It has certain reference value. Friends in need can refer to it. I hope it will help You helped.

The filter() method creates a new array containing all elements of the test implemented by the provided function.

var words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter(word => word.length > 6);
console.log(result);
// expected output: Array ["exuberant", "destruction", "present"]

Syntax

var array = arr.filter(function(item,index,array){})
// 一般都传一个参数

Return value

A new array of collections of elements that pass the test, if not The test returns an empty array

Description

filter calls the callback function once for each element in the array and uses all elements that cause the callback to return true or equivalent to true Create a new array with the elements of value. The callback function will only be called on indexes that have been assigned values, and will not be called on indexes that have been deleted or have never been assigned values. Elements that fail the callback function test will be skipped and will not be included in the new array.

filter The range of elements traversed has been determined before the callback function is called for the first time. Elements added to the array after calling filter will not be traversed by filter. If existing elements have been changed, the values ​​they pass into the callback function are the values ​​at the moment when filter traverses them. Elements that have been deleted or have never been assigned a value will not be traversed. (If you don’t understand, please read the forEach method written before)

Example

Filter and exclude all small values

//下例使用 filter 创建了一个新数组,该数组的元素由原数组中值大于 10 的元素组成。
function isBigEnough(element) {
  return element >= 10;
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// filtered is [12, 130, 44]

Filter JSON Invalid entry

// 以下示例使用filter()创建具有非零id的json。
var arr = [
  { id: 15 },
  { id: -1 },
  { id: 0 },
  { id: 3 },
  { id: 12.2 },
  { },
  { id: null },
  { id: NaN },
  { id: 'undefined' }
];
var invalidEntries = 0;
function isNumber(obj) {
  return obj !== undefined && typeof(obj) === 'number' && !isNaN(obj);
} 
function filterByID(item) {
  if (isNumber(item.id) && item.id !== 0) {
    return true;
  } 
  invalidEntries++;
  return false; 
}
var arrByID = arr.filter(filterByID);
console.log('Filtered Array\n', arrByID); 
// Filtered Array
// [{ id: 15 }, { id: -1 }, { id: 3 }, { id: 12.2 }]
console.log('Number of Invalid Entries = ', invalidEntries); 
// Number of Invalid Entries = 5

Search in array

// 下面的示例使用filter()根据搜索条件过滤数组内容
var fruits = ['apple', 'banana', 'grapes', 'mango', 'orange'];
/**
 * Array filters items based on search criteria (query)
 */
function filterItems(query) {
  return fruits.filter(function(el) {
      return el.toLowerCase().indexOf(query.toLowerCase()) > -1;
  })
}
console.log(filterItems('ap')); // ['apple', 'grapes']
console.log(filterItems('an')); // ['banana', 'mango', 'orange']
//如果输入的字母是不相连的,那么久得不到你想要的结果
console.log(filterItems('al'));// []
// 输出结果为空

The filter method is generally used to filter and filter.

If the filter method is not supported in some environments, then please visit the mdn website to solve the problem MDN Array.prototype.filter() method.

The above is the detailed content of In-depth understanding of the filter() method in JavaScript (with code). For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn