Javascript数组迭代精髓,拿去花
2024-08-23 16:02:20
数组迭代
数组迭代是处理各数组的利器,编写代码时常常会用到,为我们提供了大大的便利。如果还不知道,真的别告诉别人你知道js哈哈。
以下迭代方法均不会改变原数组,带*为必选对象。
1、arr.forEach(function(*cur,index,arraySelf)) 此方法为每个数组元素调用一次函数(回调函数)
var txt = "";
var numbers = [45, 4, 9, 16, 25];
numbers.forEach(myFunction);
function myFunction(cur, index, array) {
txt = txt + cur;
}
console.log(txt) //返回:45491625
2、arr.map(function(*cur,index,arrSelf))对每个数组元素执行函数来创建新数组,不会对没有值的数组元素执行函数
var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);
function myFunction(value, index, array) {
return value * 2;
}
console.log(number2) //返回[90,8,18,32,50]
3、arr.filter(function(*cur,index,arrSelf)) 创建一个包含通过测试的数组元素的新数组
var numbers = [45, 4, 9, 16, 25];
var over18 = numbers.filter(myFunction);
function myFunction(value, index, array) {
return value > 18;
}
console.log(over18); //返回[45,25]
4、arr.reduce(function(prev,cur,index,arrSelf),[initialValue]) 从左到右为每一个数组元素执行函数,并缩减数组的元素(不是改变原数组),最终计算为一个值,initialValue为初始值,没设置默认数组第一个元素为初始值,然后函数从数组第二个元素开始执行
var arr = [1, 2, 3, 4];
var sum = arr.reduce(function(*prev,*cur, index, arrSelf) {
console.log(prev, cur, index); //返回1,3,1
return prev + cur; //返回10
})
console.log(arr, sum); //这里没有设置初始值,默认为第一个元素1,最后返回**[1,2,3,4] 10 **,若设置初始值为10,则最后sum值为20
arr.every(function(*cur,index,arrSelf)) 检查所有数组值是否通过测试,如全部通过返回true,否则返回false
var numbers = [45, 4, 9, 16, 25];
var allOver18 = numbers.every(myFunction);
function myFunction(value, index, array) {
return value > 18;
}
console.log(allOver18); //返回false
arr.some(function(*cur,index,arrSelf)) 检查是否存在数组值通过测试,如存在返回true,否则返回false
var numbers = [45, 4, 9, 16, 25];
var allOver18 = numbers.some(myFunction);
function myFunction(value, index, array) {
return value > 18;
}
console.log(allOver18); //返回true
arr.find(function(*cur,index,arrSelf)) 返回通过测试函数的第一个数组元素的值
var numbers = [4, 9, 16, 25, 29];
var first = numbers.find(myFunction);
function myFunction(value, index, array) {
return value > 18;
}
console.log(first); //返回25
以上对各方法的解释和例子参考w3cschool:https://www.w3school.com.cn/js/js_array_iteration.asp
如有不正确,欢迎指出改正
最新文章
- 整合Spring、SpringMVC、MyBatis
- Java EE开发平台随手记1
- 关于input/textarea提交内容空格回车转换问题,以及ng-model去除空格问题
- SU Demos-07NMO
- PLsql设置
- VIM跳到指定行
- hadoop 学习笔记 (十) mapreduce2.0
- linux基于学习
- MySQL删除单列重复或多列同时重复值并保留一条
- spring各个版本开发包下载
- 慢查询日志(mysql)
- 测试AtomicInteger与普通int值在多线程下的递增操作
- 【网摘】C#中TransactionScope的使用方法和原理
- 位运算符 &; | ~ ^ <;<; >;>;
- js jquery数组去重
- 【物联网】 9个顶级开发IoT项目的开源物联网平台(转)
- flask --- 04 . 偏函数, 线程安全,栈堆,
- Delphi如何找到出错行的行数!!
- js 删除url指定参数
- docker设置引用国内镜像加速