数组迭代

数组迭代是处理各数组的利器,编写代码时常常会用到,为我们提供了大大的便利。如果还不知道,真的别告诉别人你知道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

如有不正确,欢迎指出改正

最新文章

  1. 整合Spring、SpringMVC、MyBatis
  2. Java EE开发平台随手记1
  3. 关于input/textarea提交内容空格回车转换问题,以及ng-model去除空格问题
  4. SU Demos-07NMO
  5. PLsql设置
  6. VIM跳到指定行
  7. hadoop 学习笔记 (十) mapreduce2.0
  8. linux基于学习
  9. MySQL删除单列重复或多列同时重复值并保留一条
  10. spring各个版本开发包下载
  11. 慢查询日志(mysql)
  12. 测试AtomicInteger与普通int值在多线程下的递增操作
  13. 【网摘】C#中TransactionScope的使用方法和原理
  14. 位运算符 & | ~ ^ << >>
  15. js jquery数组去重
  16. 【物联网】 9个顶级开发IoT项目的开源物联网平台(转)
  17. flask --- 04 . 偏函数, 线程安全,栈堆,
  18. Delphi如何找到出错行的行数!!
  19. js 删除url指定参数
  20. docker设置引用国内镜像加速

热门文章

  1. 飞机调度 Now or Later? LA 3211 (2-SAT问题)
  2. Apache Hudi在医疗大数据中的应用
  3. jQuery-操作元素的内容,属性,样式
  4. Java实现 LeetCode 501 二叉搜索树中的众数
  5. Java实现 蓝桥杯VIP 算法提高 十进制转八进制数
  6. Java实现蓝桥杯单位转换
  7. SQK Server实现 LeetCode 175 组合两个表
  8. Java实现 LeetCode 42 接雨水
  9. Java实现 蓝桥杯 算法训练 二进制数数
  10. Java实现荷兰国旗问题