1. 常用的数组 API

forEach 遍历所有元素,item 对应的是元素的值,index 对应的是元素的位置

let arr = [4, 6, 8];
arr.forEach(function(item, index){console.log(index, item)
})
// 0 4
// 1 6
// 2 8

every 判断所有元素是否都符合条件

let arr = [4, 6, 8];
let result = arr.every(function(item, index){if(item < 10) {return true}
})
console.log(result) // true

some 判断是否有至少一个元素符合条件

let arr = [4, 6, 8];
let result = arr.some(function(item, index){if(item < 7) {return true}
})
console.log(result) // true

sort 排序
arr.sort([compareFunction]),如果 compareFunction(a, b) 小于 0 ,那么 a 会被排列到 b 之前,如果没有指明 compareFunction,那么元素会按照转换为的字符串的诸个字符的 Unicode 位点进行排序

let arr = [4, 3, 6, 2, 8];
let result = arr.sort(function(a, b){return a - b
})
console.log(result) // [ 2, 3, 4, 6, 8 ]

map 对元素重新组装,生成新数组

let arr = [4, 3, 6, 2, 8];
let result = arr.map(function(item, index){return item
})
console.log(result) // [ 4, 3, 6, 2, 8 ]

filter 通过某一条件过滤数组

let arr = [4, 3, 6, 2, 8];
let result = arr.filter(function(item, index){if(item >= 5) {return true}
})
console.log(result) // [ 6, 8 ]

2. 纯函数

纯函数有两个特点:1. 不改变原数组(没有副作用);2. 返回一个数组

除了上面提到的 forEach, every, some, filter 属于非纯函数外,我们常用的 push, pop, shift, unshift 方法也属于非纯函数

const arr = [10, 20, 30, 40]const popRes = arr.pop()
const shiftRes = arr.shift()
const pushRes = arr.push(50) // 返回 length
const unshiftRes = arr.unshift(5) // 返回 lengthconsole.log(popRes, arr) // 40 [ 10, 20, 30 ]
console.log(shiftRes, arr) // 10 [ 20, 30 ]
console.log(pushRes, arr) // 3 [ 20, 30, 50 ]
console.log(unshiftRes, arr) // 4 [ 5, 20, 30, 50 ]

常用的数组纯函数除了 sort, map, filter 之外,还有 concatslice

const arr = [10, 20, 30, 40]const concatRes = arr.concat([50, 60])
const sliceRes = arr.slice()console.log(concatRes) // [10, 20, 30, 40, 50, 60]
console.log(sliceRes) // [ 10, 20, 30, 40 ]

需要区分 slicesplice 的区别,slice 为纯函数,splice 为非纯函数

const arr = [10, 20, 30, 40, 50]// slice 纯函数
const sliceRes1 = arr.slice(1, 4)
const sliceRes2 = arr.slice(2)
const sliceRes3 = arr.slice(-3)console.log(sliceRes1, arr) // [ 20, 30, 40 ] [ 10, 20, 30, 40, 50 ]
console.log(sliceRes2, arr) // [ 30, 40, 50 ] [ 10, 20, 30, 40, 50 ]
console.log(sliceRes3, arr) // [ 30, 40, 50 ] [ 10, 20, 30, 40, 50 ]// splice 非纯函数
const spliceRes1 = arr.splice(1, 2, 'a')
const spliceRes2 = arr.splice(1, 2)
const spliceRes3 = arr.splice(1, 0, 'a')
console.log(spliceRes1, arr) // [ 20, 30 ] [ 10, 'a', 50 ]
console.log(spliceRes2, arr) // [ 'a', 40 ] [ 10, 'a', 50 ]
console.log(spliceRes3, arr) // [] [ 10, 'a', 50 ]

JavaScript 数组纯函数相关推荐

  1. JavaScript数组和函数

    1. 数组 1.1 init <!DOCTYPE html> <html lang="en"> <head><meta charset=& ...

  2. javascript的纯函数

    javascript纯函数 javascript纯函数 1.什么是纯函数? 2.例子 : 1.什么是纯函数? 一个函数的返回结果只依赖于它的参数,并且在执行过程里面没有副作用,我们就把这个函数叫做纯函 ...

  3. 【Javascript】纯函数

    纯函数是一类特别的函数: 只要是同样的输入(实参),必定得到同样的输出(返回) 纯函数的特点: 它没有改变原来参数的值 它没有修改外部的变量和数据 每次调用时传递相同的值,返回的结果永远一样 必须遵守 ...

  4. JavaScript数组,函数

    数组:多个元素的集合,数组是个有序列表 字面量创建数组: var arr1 = [ ] 数组内元素以逗号隔开,字符串加引号 数组长度 arr1.length 数组下标:从0开始 遍历数组:for(va ...

  5. 纯函数(Pure functions)

    一.纯函数的概念 纯函数:相同的输入永远会得到相同的输出,而且没有任何可观察的副作用 纯函数就类似数学中的函数(用来描述输入和输出之间的关系), y=f(x),映射 lodash 是一个纯函数的功能库 ...

  6. JavaScript函数式编程(纯函数、柯里化以及组合函数)

    JavaScript函数式编程(纯函数.柯里化以及组合函数) 目录 JavaScript函数式编程(纯函数.柯里化以及组合函数) 前言 1.纯函数 1.1.纯函数的概念 1.2.副作用 1.3.纯函数 ...

  7. JavaScript函数式编程之深入理解纯函数

    更多相关内容见博客 https://github.com/zhuanyongxigua/blog 纯函数是函数式编程的基础,需要重点理解. 纯函数的概念: 纯函数是这样一种函数,即相同的输入,永远会得 ...

  8. Javascript数组函数库

    其实平时用的比较多的应该是push和pop,不过还是都记下来,以便后面使用. shift :删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined  var a = [1,2,3, ...

  9. 在javascript中使用纯函数处理副作用

    在javascript中使用纯函数处理副作用 今天给大家带来一片译文, 详情请点击这里.可能在墙内哦 开始了, 如果你点开这篇文章, 就证明你已经开始涉及函数式编程了, 这距离你知道纯函数的概念不会很 ...

最新文章

  1. Servlet—07—Cookie; Seesion;
  2. Github博客地址
  3. bzoj1034题解
  4. MogDB/openGauss 手动部署(非OM工具)单机、主备、主备级联架构
  5. vs code使用问题
  6. xlsxwriter php,Xlsxwriter
  7. EF 5.0 帮助类
  8. ACL 2021 | 火山翻译成绩斐然
  9. CJOI 05新年好 (最短路+枚举)
  10. [TCP/IP] 传输层-ethereal 抓包分析TCP包
  11. android蓝牙 助手源码,蓝牙串口助手(Android Studio源码)
  12. java word书签_java和javascript获取word的 书签位置
  13. Hello!树先生 (2011)
  14. IDEA使用docker打包镜像
  15. 数字化转型再下一城,数字孪生厂商优锘科技宣布完成超3亿元融资
  16. 战略支援部队信息工程大学的计算机类,战略支援部队信息工程大学2018年硕士研究生招生简章...
  17. 如何把Windows系统安装到U盘随身携带,即插即用!
  18. [PHP面试题]跳槽面试必背-自己最近5年的整理(二)
  19. python爬取百度标题_Python爬取百度热搜和数据处理
  20. PAOGD个人作业4——利用OpenGL设计贪吃蛇游戏

热门文章

  1. Vue自定义组件属性传值
  2. 【JavaWeb】Web前端性能优化
  3. vue+video.js播放.m3u8地址视频
  4. SpringSecurity问题分析之AccessDeniedException: Access is denied 源码分析
  5. Java8 stream流map方法使用
  6. php实现sftp上传文件,PHP-sftp文件上传
  7. 如何使文字缩略成点点点
  8. python获取当前系统的日期_python怎么获取当前系统时间
  9. 光明日报:当教育遇上区块链,会擦出什么火花
  10. Proxmark3 一键刷固件工具 20191125