JavaScript 数组怎么截取
在日常做网页开发时,我们经常会遇到“只需要数组里某一段内容”的情况——比如要展示某一页的商品列表、提取用户近三个月的订单记录,这时候就需要用到数组截取的方法。很多刚接触前端的朋友,会把截取和删除数组元素搞混,其实两者的区别很简单:截取是从旧数组里“抠出”一段新数组,旧数组本身不会变;而删除是直接改原数组的内容。
最常用的截取方法:slice()
slice()是数组截取里最安全、最常用的方法,它就像切水果时用的水果刀,你指定“从哪里下刀”和“切多长”,就能得到想要的那一段,不会破坏原来的水果。它的语法很简单:数组.slice(开始位置, 结束位置),这里的位置是从0开始数的,比如数组[10,20,30,40],10是第0位,20是第1位,以此类推。

举个生活化的例子:假设你有一叠按顺序放的便利贴,内容是["周一", "周二", "周三", "周四", "周五"],如果想拿出周二到周四这三张,就可以写便利贴.slice(1, 4)——开始位置是1(对应周二),结束位置是4,注意结束位置的数字是“不算在内”的,所以会取第1、2、3位的内容,也就是["周二", "周三", "周四"],原来的便利贴一叠还是完整的,没有被撕坏。
如果只写一个参数,比如便利贴.slice(2),就会从第2位(周三)一直取到最后,得到["周三", "周四", "周五"];如果用负数当参数,就相当于从最后往前数,比如便利贴.slice(-3),就是从最后1位(周五)往前数3位,得到["周三", "周四", "周五"],适合想取末尾内容的场景。
会修改原数组的截取方法:splice()
除了slice(),还有一个方法叫splice(),很多人会把它和slice()搞混,其实它的作用不是单纯截取,而是“截取并删除”,会直接改变原来的数组。它的语法是数组.splice(开始位置, 删除数量, 可选的新内容),第三个参数是用来替换被删除内容的,平时如果只需要截取,就可以忽略这个参数。
还是用刚才的便利贴举例,如果你写便利贴.splice(1, 3),意思是从第1位(周二)开始,删除3个元素,结果原来的数组就变成["周一"],而被删除的内容会组成一个新数组["周二", "周三", "周四"]。这个方法适合“既要取出一段内容,又要从原数组里删掉它们”的场景,比如你要把前三个待办事项移到另一个列表,同时从当前待办里去掉它们。
不同场景选对方法很重要
如果你的需求是“只拿一段内容,原数组还要保留”,那一定要选slice()——毕竟没人想不小心删掉原数组里的重要数据;如果确实需要同时修改原数组,再用splice()。比如做电商分页时,每一页要取10个商品,用slice(当前页*10, 当前页*10+10)就能轻松拿到对应页的内容,不会影响原来的商品数组;而如果是要批量删除数组里不需要的元素,splice()就更合适。
另外要注意小细节:如果slice()的开始位置比结束位置大,会返回空数组;如果结束位置超过数组长度,它会自动取到数组末尾,不会报错,这也是它比splice()更“温和”的地方,适合新手用。