写点什么

数组(三)

作者:Jason199
  • 2022 年 6 月 14 日
  • 本文字数:2053 字

    阅读完需:约 7 分钟

数组(三)

 12. indexOf()

        使用方法:

          1. 数组.indexOf(数据)

arr.indexOf()

2. 数组.indexOf(数据, 开始索引)

       从哪个索引开始向后查找

    作用: 正向查看数组里面指定这个数据得索引

  返回值:

如果有这个数据, 是第一个满足条件得数据得索引

如果没有这个数据, 那么是 -1

var arr = ['hello', 'world', '你好', '世界', 'hello']var res = arr.indexOf('hello')console.log(res)console.log(arr)
复制代码



13. lastIndexOf()

    使用方法:

1. 数组.lastIndexOf(数据)

2. 数组.lastIndexOf(数据, 开始索引)

作用: 反向查看数组里面指定这个数据得索引

返回值:

如果有, 就是找到得第一个数据得索引

如果没有就是 -1

注意: 虽然是从后向前查找, 但是索引还是正常索引

indexOf()和 lastIndexOf()都是用于返回元素在数组中第一次被查找到的索引位置,如果没有找到,那么返回-1。 includes()返回布尔值,表示是否至少找到一个与指定元素匹配的项。

他们都接受以下两个函数:

  1. 第一个参数是要查找的东西

  2. 第二个参数是查找起点位置的索引,如果缺省或是格式不正确,那么默认为 0。第二个参数可选

区别就是一个从前往后找,一个从后往前找,这里就不在代码展示了 。

14. forEach()

使用方法: 数组.forEach(function (item, index, arr) {})

item: 数组得每一项

index: 数组每一项得索引

arr: 原始数组

作用: 取代 for 循环得作用, 遍历数组

没有返回值

本质 上,forEach()方法相当于使用 for 循环遍历数组。


 var arr = ['hello', 'world', '你好', '世界'];        var res = arr.forEach(function(item, index, arr) {            console.log(item, '-----', index, '-----', arr);            })
复制代码



15. map()

使用方法: 数组.map(function (item, index, arr) {})

item: 数组得每一项

index: 数组每一项得索引

arr: 原始数组

作用: 映射数组

返回值: 是一个新的数组

map():对数组每一项都运行传入的函数,返回由每次函数调用的结果构成的数组。

不改变原始数组

let numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];let mapResult = numbers.map((item, index, array) => item * 2);console.log(mapResult);
复制代码


这个方法非常适合创建一个与原 始数组元素一一对应的新数组。

17. every()

使用方法: 数组.every(function (item, index, arr) {})

item: 数组得每一项

index: 数组每一项得索引

arr: 原始数组

作用: 判断原始数组里面是不是每一个都满足条件

返回值: 是一个布尔值

对 every() 来说,传入的函数必须对每一项都返回 true,它才会返回 true;否则,它就返回 false。

18 some()

使用方法: 数组.some(function (item, index, arr) {})

判断数组中是不是有某一个满足条件

some() 来说,只要有一项让传入的函数返回 true,它就会返回 true。

let numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1]; let everyResult = numbers.every((item, index, array) => item > 2); alert(everyResult); let someResult = numbers.some((item, index, array) => item > 2); alert(someResult); 
复制代码


如上代码调用了 every()和 some(),传入的函数都是在给定项大于 2 时返回 true。every()返 回 false 是因为其中每一项或多项没能达到要求。而 some()返回 true 是满足一项条件即可。

19. flat()

语法: 数组.flat(数字)

数字: 表示扁平化多少层, 默认是 1

数字这个参数还可以填写 Infinity

  作用: 拍平数组

返回值: 拍平以后得数组

var arr = [        10, 20, 30,         [40, 50],          [60, 70, [80, [90, [100, [100, [120]]]]]]       ];        var res = arr.flat(Infinity);       console.log(res);
复制代码

 20. flatMap()

语法: 数组.flatMap(function (item, index, arr) {})

作用: 拍平数组, 但是只能拍一层

返回值: 是一个新的数组

一边拍平, 一边映射

  var arr = [[10, 21, 30], [40, 51, 60]];        var res = arr.flatMap(function (item) {          return item.filter(function (item) { return item % 2 === 0 })        });        console.log(res);
复制代码

23. find()

语法: 数组.find(function (item) {})

作用: 根据条件找到数组里面满足条件得数据

返回值: 找到得那个 **数据**

 var arr = [10, 20, 30, 40, 50];        var res = arr.find(function (item) {          return item > 20;        })        console.log(res);
复制代码

 24. findIndex()

语法: 数组.findIndex(function (item) {})

作用: 根据条件找到数组里面满足条件得数据

返回值: 找到得那个 **数据得索引**


var res2 = arr.findIndex(function (item) {          return item > 20;        })        console.log(res2);
复制代码


三天时间终于写好了,断断续续,最近上班也是忙碌的不行,虽说很辛苦,但是现在对数组操作方法,整体清晰了很多,收获颇多,文章如有不正确的地方欢迎来稿私聊!希望大家看完可以有所收获,晚安

发布于: 刚刚阅读数: 3
用户头像

Jason199

关注

还未添加个人签名 2022.04.29 加入

一条努力上岸的咸鱼

评论

发布
暂无评论
数组(三)_数组_Jason199_InfoQ写作社区