博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript 数组——filter()、map()、some()、every()、forEach()、lastIndexOf()、indexOf()
阅读量:7137 次
发布时间:2019-06-28

本文共 3269 字,大约阅读时间需要 10 分钟。

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"];function makeUpperCase(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 falsepassed = [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 falsepassed = [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 + "
");}[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 3index = array.lastIndexOf(7);// index is -1index = array.lastIndexOf(2, 3);// index is 3index = array.lastIndexOf(2, 2);// index is 0index = array.lastIndexOf(2, -2);// index is 0index = 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 0index = array.indexOf(7);// index is -1//结果://[2, 5, 9].indexOf(2) : 0 //[2, 5, 9].indexOf(7) : -1

转载于:https://www.cnblogs.com/zhangtao/p/6437938.html

你可能感兴趣的文章
HDU 3397 Sequence operation(线段树区间染色加区间合并)
查看>>
【随笔】写下现在所想的,开始写博客
查看>>
linux命令之vi文本编辑器
查看>>
WPF-WrapPanel
查看>>
大家好
查看>>
iOS 疑难杂症 — — UITableView 添加 tableFooterView 旋转屏幕后收不到点击事件!!!...
查看>>
asp.net 8 Request,Response,Server
查看>>
Windows API 技巧集
查看>>
github心得体会
查看>>
Binary Tree Level Order Traversal [LEETCODE]
查看>>
Install/uninstall .deb files
查看>>
如何让自己的代码更加安全?
查看>>
EBS_DBA_问题:关于不小心drop了表,进行恢复
查看>>
MongoDB数据库
查看>>
HDU-1875-畅通工程再续(最小生成树)
查看>>
POJ-1182-食物链(并查集种类)
查看>>
POJ1288 Sly Number(高斯消元 dfs枚举)
查看>>
Toping Kagglers:Bestfitting,目前世界排名第一
查看>>
Missing key(s) in state_dict: Unexpected key(s) in state_dict
查看>>
sqlconnection,sqlcommand,sqldataadapter,sqldatareader,dataset都是做什么用的?
查看>>