JS 数组方法 filter()、map()、some()、every()、forEach()、lastIndexOf()、indexOf()
filter()
语法:
var filteredArray = array.filter(callback[, thisObject]);
参数说明:
callback: 要对每个数组元素执行的回调函数。
thisObject : 在执行回调函数时定义的this对象。
//过滤掉小于 10 的数组元素://代码:
function isBigEnough(element, index, array) {
return (element >= 10);
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// 12, 130, 44
//结果:[12, 5, 8, 130, 44].filter(isBigEnough) : 12, 130, 44
功能说明:
对数组中的每个元素都执行一次指定的函数(callback),并且创建一个新的数组,该数组元素是所有回调函数执行时返回值为 true 的原数组元素。它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略,同时,新创建的数组也不会包含这些元素。
回调函数可以有三个参数:当前元素,当前元素的索引和当前的数组对象。
如参数** thisObject** 被传递进来,它将被当做回调函数(callback)内部的 this 对象,如果没有传递或者为null,那么将会使用全局对象。
filter 不会改变原有数组,记住:只有在回调函数执行前传入的数组元素才有效,在回调函数开始执行后才添加的元素将被忽略,而在回调函数开始执行到最后一个元素这一期间,数组元素被删除或者被更改的,将以回调函数访问到该元素的时间为准,被删除的元素将被忽略。
map()
// 将所有的数组元素转换为大写:
var strings = ["hello", "Array", "WORLD"];
functionmakeUpperCase(v)
{
return v.toUpperCase();
}
var uppers = strings.map(makeUpperCase);
// uppers is now ["HELLO", "ARRAY", "WORLD"]
// strings is unchanged
//结果:["hello", "Array", "WORLD"].map(makeUpperCase) : HELLO, ARRAY, WORLD
some()
对数组中的每个元素都执行一次指定的函数(callback),直到此函数返回 true,如果发现这个元素,some 将返回 true,如果回调函数对每个元素执行后都返回 false ,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
//结果:
//[2, 5, 8, 1, 4].some(isBigEnough) : false
//[12, 5, 8, 1, 4].some(isBigEnough) : true
every()
对数组中的每个元素都执行一次指定的函数(callback),直到此函数返回 false,如果发现这个元素,every 将返回 false,如果回调函数对每个元素执行后都返回 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
//结果:
//[12, 5, 8, 130, 44].every(isBigEnough) 返回 : false
//[12, 54, 18, 130, 44].every(isBigEnough) 返回 : true
forEach()
//打印数组内容:
function printElt(element, index, array) {
document.writeln("[" + index + "] is " + element + "<br />");
}
[2, 5, 9].forEach(printElt);
// Prints:// [0] is 2// [1] is 5// [2] is 9//结果://[0] is 2//[1] is 5//[2] is 9
lastIndexOf()
语法
var index = array.lastIndexOf(searchElement[, fromIndex]);
参数说明
- searchElement: 要搜索的元素
- fromIndex : 开始搜索的位置,默认为数组的长度(length),在这样的情况下,将搜索所有的数组元素。搜索是反方向进行的。
功能说明
比较 searchElement 和数组的每个元素是否绝对一致(===),当有元素符合条件时,返回当前元素的索引。如果没有发现,就直接返回 -1 。
//查找符合条件的元素:
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//结果://[2, 5, 9, 2].lastIndexOf(2) : 3
//[2, 5, 9, 2].lastIndexOf(7) : -1
//[2, 5, 9, 2].lastIndexOf(2, 3) : 3
//[2, 5, 9, 2].lastIndexOf(2, 2) : 0
//[2, 5, 9, 2].lastIndexOf(2, -2) : 0
//[2, 5, 9, 2].lastIndexOf(2, -1) : 3
indexOf()
功能与 lastIndexOf() 一样,搜索是正向进行的
// 查找符合条件的元素:
var array = [2, 5, 9];
var index = array.indexOf(2);
// index is 0
index = array.indexOf(7);
// index is -1
// 结果:
//[2, 5, 9].indexOf(2) : 0
//[2, 5, 9].indexOf(7) : -1
JavaScript 中提供了多种数组方法,如下:
- 转换方法—toLocaleString()方法、toString()方法、valueOf()方法
- 栈方法——push()方法、pop()方法
- 队列方法——shift()方法、unshift()方法
- 重排序方法——reverse()方法、sort()方法
- 操作方法——concat()方法、slice()方法、splice()方法
- 位置方法——indexOf()方法、lastIndexOf()方法
- 迭代方法——every()方法、filter()方法、forEach()方法、map()方法、some()方法
- 归并方法——reduce()方法、reduceRight()方法
转换方法:
①:toString()方法返回由数组中每个值的字符串形式拼接并且以逗号相隔的字符串
②:valueOf()方法返回的还是数组
③:toLocaleString()方法也会返回一个数组值以逗号相隔的字符串,但与toString()方法不同的是在返回日期对象时格式不同。
具体看一下例子:
var colors=["red","blue","green"];console.log(colors.toString());
//"red,blue,green"console.log(colors.valueOf());
//red,blue,greenconsole.log(colors.toLocaleString());
//"red,blue,green"
//toLocaleString()方法与toString()方法在返回日期对象时格式不同
var today=newDate();
console.log(today.toString());
// Sun Mar 05 2017 12:57:11 GMT+0800 (中国标准时间)
console.log(today.toLocaleString());
// 2017/3/5 下午12:57:11
栈方法:
①:push()方法可以接受任意数量的参数,逐个添加到数组末尾,返回修改后数组的长度
②:pop()方法从数组末尾移除最后一项,返回被移除的项
具体看下面例子:
var arr=newArray();
//使用构造函数创建数组
var count=arr.push("red","blue");
// push()返回数组长度
console.log("count="+count);
//count=2
console.log(arr);
//red,blue
count=arr.push("black");
//count=3
var item=arr.pop();
console.log("item="+item);
//pop返回被移除的项--item=black
队列方法:
①:shift()方法移除数组的第一次项并返回该项
②:unshift()方法在数组前端添加任意项,并返回新数组的长度
具体看一下例子:
var colors=newArray();
//创建数组
var count=colors.unshift("red","green");
//在数组前端添加两项
console.log(count);
// 2
count=colors.unshift("black");
//此时数组各项顺序为"black","red","green"
console.log(count)
// 3
item=colors.shift();
console.log(item);
// black
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: QML 与 C++
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论