定义和用法
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
- filter()不会对空数组进行检测
- filter()不会改变原始数组
语法
array.filter(function(currentValue,index,arr), thisValue)
1.currentValue : 必须。当前元素的值。
- index :可选。当前元素的索引值
- arr: 可选。当前元素属于的数组对象
实例1
var words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
var new_words=words.filter(function(value){
return value.length>6
})
console.log(new_words) //["exuberant", "destruction", "present"]
实例2
以下示例用于创建筛选数组,其数组删除值小于10的所有元素。
function isBigEnough(value) {
return value >= 10;
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
console.log(filtered)// [12, 130, 44]
实例3
以下示例用于filter()创建具有非零数字的所有元素的过滤json id。
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
实例4
以下示例使用filter()根据搜索条件过滤数组内容
var fruits = ['apple', 'banana', 'grapes', 'mango', 'orange'];
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']
浏览器的支持
表格中的数字表示支持该方法的第一个浏览器的版本号。
兼容
网友评论