ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
#### **数组的方法有哪些?这些方法中不改变原数组的有哪些?** 数组的方法有: * concat:连接两个数组,**不改变原数组** * join:将数组中的内容放入一个字符串中,括号中的参数就是分隔符,**不改变原数组** * slice:获取数组指定位置区间的元素,**不改变原数组** * 不传参数时,相当于不操作,返回整个数组 * 传入一个参数时,会返回从该参数到数组末尾的所有元素 * 传两个参数时,会返回从第一个参数到第二个参数之间的所有元素,但是不包含最后一个元素 * 当传入的参数为负数时,会加上数组的长度再取元素,比如说slice(-2,-1)=>slice(3,4)(假设数组长度为5) * 当传入两个参数,并且第一个参数大于第二个参数时,会返回空数组 * pop:删除并返回数组的最后一个元素,**会改变原数组** * shift:从数组的头部删除元素,返回的是该元素,**会改变原数组** * unshift:向数组的头部添加元素,返回的是数组长度,**会改变原数组** * push:向数组的末尾添加一个元素,返回的是数组长度,**会改变原数组** * reverse:将数组进行反转,返回的是反转后的数组,**会改变原数组** * sort:对数组进行排序,原理是先将数组中的元素转换成字符串,然后比较字符串,如果要正确的排序,需要在方法中传入一个比较函数,返回的是排序后的数组,**会改变原数组** * splice:主要用途是在数组的中部插入或删除元素,返回的是从该数组中删除的元素,如果没有删除,则返回空数组,**会改变原数组** * **删除任意数量的项**,需要传入两个参数,第一参数指定删除的开始位置,第二个参数指定删除多少项 * **插入任意数量的项**,需要传入3个参数,分别为起始位置,要删除的项数(一般取0),插入的项(可以为多项) * **替换指定数目的项**,参数和上面完全相同,只是第二个参数不再取0 * indexOf:查找指定元素的位置,返回该元素第一次出现的位置,**不会改变原数组** * 如果只传入一个参数,表明是查找该元素 * 如果传入两个参数,则第一个表示从哪个位置开始往后找,第二个参数表示要查找的元素 * lastIndexOf:从后往前查找指定元素的位置,只是和indexOf的查找方向不同,其他部分均相同 * reduce:这个方法很强大,也比较复杂,我专门总结了一篇[文章](https://segmentfault.com/a/1190000017420042),这个方法也**不会改变原数组** 总结:  改变原数组的方法有:shift,push,pop,unshift,sort,reserve,splice  不改变原数组的有:concat,join,slice,reduce,indexOf,lastIndexOf