JavaScript数组 几个常用方法总结


Posted in Javascript onNovember 11, 2021

1、前言

数组方法有太多了,本文记录一些本人容易记错的一些数组方法,用于巩固及复习。
后续会慢慢的将其他数组方法添加进来。
善用数组方法可以使数据处理变的优雅且简单。

那下面让我们开始吧:

2、filter()

描述:

filter() 方法创建一个新数组,并将符合条件的所有元素添加到创建的新数组中。

语法:

Array.filter(callback(element, index, array) { // 函数体 }, thisValue)

参数:

callbackthisValue:

参数 是否可选 描述
参数一 callback 必选 用来测试数组的每个元素的函数。返回 true 表示该元素通过测试,保留该元素,false 则不保留。它接收三个参数。
参数二 thisValue 可选 执行 callback 时,用于 this 的值。
对象作为该执行回调时使用,传递给函数。
如果省略了 thisValue ,"this" 的值为 "undefined"

callback的参数列表:

参数 是否可选 描述
参数一 element 必选 当前元素
参数二 index 可选 当前元素的索引值
参数三 array 可选 调用了 filter 的数组本身

thisValue的参数:

执行 callback 时,用于 this 的值。

返回值:

是一个由 filter() 参数一函数的返回值组成的新数组

示例:

let users = [
  {id: 11, name: "孙悟空"},
  {id: 21, name: "猪八戒"},
  {id: 31, name: "沙和尚"}
];

// 返回前两个用户的数组
let filterUsers = users.filter(item => item.id < 31);

console.log(filterUsers.length); // 2

3、map()

描述:

map() 方法创建一个新数组,新数组的每个元素是调用一次给定函数的返回值。

语法:

Array.map(callback(currentValue, index, array) { // 函数体 }, thisValue)

参数:

callbackthisValue

参数 是否可选 描述
参数一 callback 必选 数组中的每个元素都要运行的回调函数。它接收三个参数。
参数二 thisValue 可选 执行 callback 时,用于 this 的值。
对象作为该执行回调时使用,传递给函数。
如果省略了 thisValue ,"this" 的值为 "undefined"

callback的参数列表:

参数 是否可选 描述
参数一 element 必选 当前元素
参数二 index 可选 当前元素的索引值
参数三 array 可选 调用了 filter 的数组本身

thisValue的参数:

执行 callback 时,用于 this 的值。

返回值:

是一个由原数组每个元素执行回调函数的结果组成的新数组。

示例:

let number = [1, 2, 3].map(item => item + 1);

console.log(lengths); // 2, 3, 4

4、sort()

描述:

map() 方法在原数组上进行修改更改元素的顺序

注:默认排序顺序是在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列时

语法:

Array.sort( compareFunction )

参数:

compareFunction

参数 是否可选 描述
参数一 compareFunction 可选 规定排列顺序的函数。如果省略,元素按照转换为的字符串的各个字符的Unicode位点进行排序。

compareFunction的参数列表:

参数 是否可选 描述
参数一 firstEl 必选 第一个用于比较的元素。
参数二 secondEl 必选 第二个用于比较的元素。

compareFunction返回值

返回一个说明这两个值顺序的数字

  • 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
  • 若 a 等于 b,则返回 0。
  • 若 a 大于 b,则返回一个大于 0 的值。

返回值:

返回值为排序后的数组,但是返回值通常会被忽略,因为修改了原数组。

示例:

let number = [1, 2, 3].map(item => item + 1);

console.log(lengths); // 2, 3, 4

5、reduce()

描述:
reduce() 方法为数组中的每一个元素依次执行(升序执行)回调函数,不包括数组中被删除或从未被赋值的元素。将其结果计算为一个值。

注:reduce() 可以作为一个高阶函数,用于函数的 compose。

语法:

Array.reduce(callback(accumulator, currentValue, index, array), initialValue)

参数:

callbackinitialValue

参数 是否可选 描述
参数一 callback 必选 执行数组中每个数组元素的函数 (如果没有initialValue初始值那么第一个值不会执行改函数)它接收四个参数。
参数二 initialValue 可选 callback函数的初始值

callback的参数列表:

参数 是否可选 描述
参数一 accumulator 必选 累计器累计回调的返回值; 它是上一次调用回调时返回的累积值,或initialValue。
参数二 currentValue 必选 当前元素
参数三 index 可选 当前元素的索引值
参数四 array 可选 调用了 reduce() 的数组本身

initialValue的参数:

作为第一次调用 callback函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素作为初始值。 在没有初始值的空数组上调用 reduce 将报错。

返回值:

函数累计处理后的结果
执行完所有callback函数的accumulator参数

注:    我们的 reducer 函数的返回值分配给累计器,该返回值在数组的每个迭代中被记住,并最后成为最终的单个结果值。

示例:

let number = [1, 2, 3, 4];

let result = number.reduce((sum, current) => sum + current, 0);

console.log(result); // 10

6、forEach()

描述:

reduce() 方法为数组中的每一个元素依次执行(升序执行)回调函数,不包括数组中被删除或从未被赋值的元素。将其结果计算为一个值。

注:reduce() 可以作为一个高阶函数,用于函数的 compose。

语法:

Array.forEach(callback(currentValue , index , array), thisValue)

参数:

callbackthisValue

参数 是否可选 描述
参数一 callback 必选 执行数组中每个数组元素的函数,它接收三个参数。
参数二 thisValue 可选 执行 callback 时,用于 this 的值。
对象作为该执行回调时使用,传递给函数。
如果省略了 thisValue ,"this" 的值为 "undefined"

callback的参数列表:

参数 是否可选 描述
参数一 currentValue 必选 当前元素
参数二 index 可选 当前元素的索引值
参数三 array 可选 调用了 forEach() 的数组本身

thisValue的参数:

执行 callback 时,用于 this 的值。

返回值:

该方法没有返回值。

示例:

let number = [1, 2, 3, 4];

number.forEach((item, index ,array) =>{
 console.log(item); // 1/2/3/4
});

7、方法列表

方法属性:

方法 改变原数组 返回值描述 描述
filter() 过滤后的新数组 过滤器
map() 循环后的新数组 循环
sort() 为排序后的数组 排序
reduce() 为函数累计处理后的结果 累加器
forEach() 没有返回值为undefined 循环

到此这篇关于JavaScript数组 几个常用方法总结的文章就介绍到这了,更多相关JavaScript数组 几个常用方法 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

8、本文参考

MDN中文官网https://developer.mozilla.org/zh-CN/
W3School 简体中文版https://www.w3school.com.cn/

Javascript 相关文章推荐
HTML页面如何象ASP一样接受参数
Feb 07 Javascript
javascript函数库-集合框架
Apr 27 Javascript
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
Feb 10 Javascript
将查询条件的input、select清空
Jan 14 Javascript
bootstrap-treeview自定义双击事件实现方法
Jan 09 Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
Jan 15 Javascript
JS正则子匹配实例分析
Dec 22 Javascript
微信小程序wx:for和wx:for-item的用法详解
Apr 01 Javascript
vue-cli 组件的导入与使用教程详解
Apr 11 Javascript
小程序云开发初探(小结)
Oct 24 Javascript
微信小程序封装的HTTP请求示例【附升级版】
May 11 Javascript
vue中是怎样监听数组变化的
Oct 24 Javascript
JavaScript 事件捕获冒泡与捕获详情
JavaScript 定时器详情
Nov 11 #Javascript
使用javascript解析二维码的三种方式
Nov 11 #Javascript
实现一个简单得数据响应系统
Nov 11 #Javascript
JavaScript函数柯里化
Nov 07 #Javascript
JS数组去重详情
Nov 07 #Javascript
手写实现JS中的new
Nov 07 #Javascript
You might like
一个php作的文本留言本的例子(六)
2006/10/09 PHP
php类
2006/11/27 PHP
PHP array_push 数组函数
2009/12/26 PHP
学习php设计模式 php实现命令模式(command)
2015/12/08 PHP
Laravel如何友好的修改.env配置文件详解
2017/06/07 PHP
jQuery学习总结之元素的相对定位和选择器(持续更新)
2011/04/26 Javascript
控制文字内容的显示与隐藏示例
2014/06/11 Javascript
jQuery中contents()方法用法实例
2015/01/08 Javascript
JavaScript数组各种常见用法实例分析
2015/08/04 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
2015/08/28 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
jQuery命名空间与闭包用法示例
2017/01/12 Javascript
JS实现数组去重复值的方法示例
2017/02/18 Javascript
jQuery选择器之子元素过滤选择器
2017/09/28 jQuery
vue项目引入字体.ttf的方法
2018/09/28 Javascript
JavaScript 继承 封装 多态实现及原理详解
2019/07/29 Javascript
javascript History对象原理解析
2020/02/17 Javascript
基于js判断浏览器是否支持webGL
2020/04/18 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
axios封装与传参示例详解
2020/10/18 Javascript
Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
2015/04/24 Python
python3实现斐波那契数列(4种方法)
2019/07/15 Python
详解html5页面 rem 布局适配方法
2018/01/12 HTML / CSS
日本航空官方网站:JAL
2019/06/19 全球购物
自荐信的五个重要部分
2013/10/29 职场文书
合伙经营协议书范本
2014/04/18 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
建筑技术负责人岗位职责
2015/04/13 职场文书
2015年社区创卫工作总结
2015/04/21 职场文书
同学聚会致辞集锦
2015/07/28 职场文书
有关信念的名言语录集锦
2019/12/06 职场文书
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS
CSS3 制作的彩虹按钮样式
2021/04/11 HTML / CSS
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL
微软发布Windows 11今年最大更新22H2(附 ISO 镜像官方下载)
2022/09/23 数码科技