前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >怀英漫谈9 - JS 数组

怀英漫谈9 - JS 数组

作者头像
用户1335799
发布2018-07-26 16:29:21
7950
发布2018-07-26 16:29:21
举报

你好,这一周,我们来聊聊JS的数组。

所谓的数组,就是一些数据的集合,JS中没有集合的概念,所以集合也是数组的一种。如果你Java用的多,那么这个概念就有点儿难以理解,毕竟从Java的文意来说,集合的范围要远远高于数组。不过这是在JS中,那只能入乡随俗了。

就我目前的开发而言,数组用的多的方法是增、删、查。这其中又以查用的最多。你可可能想要问我“修改”这个功能去了哪里,其实修改这个功能我倒是觉得这是个伪命题,为什么这么说呢?因为数组修改的本质是先定位需要修改的那个数据,即得到那个数据的下标,然后再给那个下标重新赋值就可以了。这么一来,与修改这个操作等价的操作就是查找+重新赋值。

在数组的这些个方法中,我们先来说说“查”这个方法,在开发中最常遇到的需求是,知道一个数组的元素,但我想知道这个元素在这个数组中的位置。比如一个名字叫week的数组['星期一','星期二','星期三','星期四','星期五','星期六','星期7'],其中'星期7'这个元素我填写错了,我现在想要将它改为'星期日',这个时候我就要先去查找它,然后再将这个下标下的值改为'星期日',此时的查找我通常会用indexOf()函数,直接祭出代码indexOf('星期7');就能得到想要的下标了。

此时,如果你问我除了indexOf()这个方法,还有其它的方法么?之前开发的时候,我还真的只知道这一种方法,不过聊天之前,我查了一下API,发现indexOf的本质是遍历数组,所以,用遍历数组的方式也能做,不过那样话,就会比较麻烦。需要自己定义位置的标记,然后还需要自己去实现比较。通常在效率第一的前提下,很少这样用。

其实从某种程度上来说,indexOf()这个方法是对遍历的一种封装。数组的遍历,有foreach(), map(), reduce()三种。reduce()属于迭代器的操作,说实话,用的少,对其的了解也并不深,foreach()倒是常用,它和map()的区别是,foreach()操作的是原有的数组,而map()对原有的数组没有改变。而且这两个遍历方法的核心所在是它们callback函数的参数列表,(item,index,array),item指目前遍历的这个下标的元素,index是目前遍历的这个下标,array是整个数组。这三个参数列表决定了每一个元素被遍历到的时候所做的操作,所以会格外的重要。

说完了排序,下一个要说的就是数组的增和删了,我长用的增添的方法是push(),删除的方法pop(),push()方法是增添第一个元素,pop()方法是删除最后一个元素。与其对应的还有两个方法,我对他们也不是很熟悉,就不做介绍了。

不过与其相关的还有一个方法splice()能做到在任意的位置添加,删除,替换数组元素,这个方法至少要传入2个参数,第一个参数要被添加、删除、替换元素的索引位置,第二个是要删除多少个元素,第三个是要添加的元素。这样一来,通过这三个参数的不同组合,就能达到添加、删除、替换的不同效果。比如有一个数组arr=[1,2,3]; 。如果想要替换索引1的元素,就可以这么写arr.splice(1, 1, 12);,即在索引1的位置删除1个元素,新添一个元素12,返回[1,12,3],达到替换的效果。如果想要添加一个元素,那么可以这么写arr.splice(1, 0, 123); ,即在索引1的位置,删除0个元素,,新增一个元素123,返回[1,123,2,3],从而达到增添的效果。如果想要删除一个元素,那么可以这么写arr.splice(1,1);,即在索引为1的位置,删除1个元素,不增添新的元素,返回[1,3],从而达到删除的效果。

除了这些常用的方法之外,其它的还有一些增强型的方法,比如数组排序,数组合并等,我列在下面,如有兴趣,可以去w3c上瞅一眼。

清 单

arr.indexOf(element[,beginIndex]);

查找

arr.forEach(callback);

遍历(对原数组有改变)

arr.map(callback)

遍历(对原数组没有改变)

arr.reduce(callback[,initialValue])

遍历(迭代器方式)

arr.reverse()

反转数组元素顺序

arr.sort([function])

排序

arr.push(ele1,ele2….)

向数组结尾后面添加新的元素

arr.unshift(ele1,ele2…)

向数组开始前面添加新的元素

arr.shift()

从数组中取出该数组的第一个元素

arr.pop()

从数组中取出该数组的最后一个元素

arr.splice(index,howMany[,ele1…])

在任意位置添加、删除、替换数组的元素

arr.slice(begin,end)

拷贝

arr.concat(value1,value2…)

合并数组

arr.join(separator)

数组通过separator(分隔符)连接把数组转换为字符串

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 怀英的自我修炼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档