JS 数组遍历
1.filter()
语法
var new_arrary = arr.filter(callback[, thisArg])
filter 为数组中的每个元素调用一次 callback 函数,并利用所有使得 callback 返回 true 或 等价于 true 的值 的元素创建一个新数组。
注意:
- filter 不会改变原数组。
- callback 被调用时传入三个参数:(元素的值,元素的索引,被遍历的数组)
- callback 只会在那些有值的索引上被调用,不会在那些被删除或从来未被赋值的索引上调用。
// 获得数组所有大于20的元素
function isBigEnough(element, index, array){
return element > 20
}
var filtered = [22,30,5,77].filter(isBigEnough);
// filtered is [22, 30, 77];
2.map()
语法
array.map(callback[, thisArg])
map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组。
注意:
- map 方法会给原数组中的每个元素都按顺序调用一次 callback 函数。callback 每次执行后的返回值组合起来形成一个新数组。
// 将所有的数组元素转换为大写:
var arr = ['one','two','three'];
function makeUpperCase(element, index, array){
return element.toUpperCase();
}
var mapped = arr.map(maleUpperCase);
//mapped is ['ONE','TWO','THREE'];
// 检测数组每个元素是否大于20
function isBigEnough(element, index, array){
return element > 20
}
var filtered = [22,30,5,77].filter(isBigEnough);
//filtered is [true, true, false, true];
3.some()
语法
arr.some(callback[, thisArg])
some 为数组中的每一个元素执行一次 callback 函数,直到找到一个使得 callback 返回一个“真值”(即可转换为布尔值 true 的值)。如果找到了这样一个值,some 将会立即返回 true。否则,some 返回 false。
// 检测在数组中是否有元素大于 10。
function isBigEnough(element, index, array) {
return (element >= 10);
}
var passed = [2, 5, 8, 1, 4].some(isBigEnough);
// passed is false
passed = [12, 5, 8, 1, 4].some(isBigEnough);
// passed is true
4.every()
语法
arr.every(callback[, thisArg])
every 方法为数组中的每个元素执行一次 callback 函数,直到它找到一个使 callback 返回 false(表示可转换为布尔值 false 的值)的元素。如果发现了一个这样的元素,every 方法将会立即返回 false。否则,callback 为每一个元素返回 true,every 就会返回 true。
// 检测数组中的所有元素是否都大于 10。
function isBigEnough(element, index, array) {
return (element >= 10);
}
var passed = [12, 5, 8, 130, 44].every(isBigEnough);
// passed is false
passed = [12, 54, 18, 130, 44].every(isBigEnough);
// passed is true
5.forEach()
语法
array.forEach(callback[, thisArg])
forEach 方法按升序为数组中含有效值的每一项执行一次callback 函数
// 打印出数组的内容
function logArrayElements(element, index, array) {
console.log("a[" + index + "] = " + element);
}
[2, 5, 9].forEach(logArrayElements);
// logs:
// a[0] = 2
// a[1] = 5
// a[2] = 9
6.indexOf()
语法
arr.indexOf(searchElement[, fromIndex = 0])
indexOf()方法返回给定元素能找在数组中找到的第一个索引值,否则返回-1。
注意:
- fromIndex
开始查找的位置。如果该索引值大于或等于数组长度,意味着不会在数组里查找,返回-1。如果参数中提供的索引值是一个负值,则将其作为数组末尾的一个抵消,即-1表示从最后一个元素开始查找,-2表示从倒数第二个元素开始查找 ,以此类推。 注意:如果参数中提供的索引值是一个负值,仍然从前向后查询数组。如果抵消后的索引值仍小于0,则整个数组都将会被查询。其默认值为0.
// 使用indexOf方法确定多个值在数组中的位置。
var array = [2, 5, 9];
array.indexOf(2); // 0
array.indexOf(7); // -1
array.indexOf(9, 2); // 2
array.indexOf(2, -1); // -1
array.indexOf(2, -3); // 0
7.lastIndexOf()
语法
arr.lastIndexOf(searchElement[, fromIndex = arr.length - 1])
lastIndexOf() 方法返回指定元素(也即有效的 JavaScript 值或变量)在数组中的最后一个的索引,如果不存在则返回 -1。从数组的后面向前查找,从 fromIndex 处开始。
注意:
- fromIndex
从此位置开始逆向查找。默认为数组的长度减 1,即整个数组都被查找。如果该值大于或等于数组的长度,则整个数组会被查找。如果为负值,将其视为从数组末尾向前的偏移。即使该值为负,数组仍然会被从后向前查找。如果该值为负时,其绝对值大于数组长度,则方法返回 -1,即数组不会被查找。
// 使用 lastIndexOf 定位数组中的值。
var array = [2, 5, 9, 2];
var index = array.lastIndexOf(2);
// index is 3
index = array.lastIndexOf(7);
// index is -1
index = array.lastIndexOf(2, 3);
// index is 3
index = array.lastIndexOf(2, 2);
// index is 0
index = array.lastIndexOf(2, -2);
// index is 0
index = array.lastIndexOf(2, -1);
// index is 3