JavaScirpt 数组(一)
文章参考:W3school
小火柴的前端小站;
js
是前端的基础,正所谓基础不牢,地动山腰,数组是js
中重点内容,对于数组方法的灵活使用是一名合格前端的必备技能,所以让我们一起开始学习吧!
(1) toString
方法
toString
方法会把数组转换为以逗号分隔的每个值拼接的字符串
var name = ["jack","Amy","Tom","jerry"];
name.toString();//'jack,Amy,Tom,jerry'
(2)pop
方法
pop
方法类似"出栈",也就是删除数组最后一个元素(作为返回值),数组的长度 length
也会相应变化,是数组中的变异方法,会改变原数组。
var arr = [1,2,3];
console.log(arr.pop());//3
console.log(arr,arr.length);//[1,2] 3
(3) push
方法
push
方法类似"入栈",也就是在数组末尾添加一个元素(作为返回值),数组的长度 length
也会相应变化,是数组中的变异方法,会改变原数组。
var arr = [1,2,3];
console.log(arr.push(4));//4
console.log(arr,arr.length);//[1,2,3,4] 4
插话:在许多文章内,看到了许多类似这样的表达式:
[].push.call(someObj,someProperty);
Array.prototype.push.apply(arr1,arr2)
等等用法,可能许多小伙伴看到apply call bind
应该知道它们的用法,下一期谈谈它们。
(4)shift
方法
shift
方法会删除第一个数组元素(作为返回值),数组的长度 length
也会相应变化(length - 1
)是数组中的变异方法,会改变原数组。
var arr = [1,2,3];
console.log(arr.shift());//1
console.log(arr,arr.length);//[2,3] 2
(5)unshift
方法
unshift
方法会向数组的开头添加一个或更多元素,所以参数可以有一个或多个,并返回新的长度。[注:不考虑低版本的浏览器]
var arr = [1,2,3];
console.log(arr.unshift(0));//4
console.log(arr,arr.length);//[0,1,2,3] 4
(6)concat
方法
concat
方法用于连接两个或多个数组,该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本,是非变异方法。[用于数组拼接]
要合并的数据若为数组时,将其合并到原数组;若为具体数据时直接添加到原数组尾部;省略时创建原数组的副本;
听上去有点绕绕的,上代码!
//concat方法不会改变原有数组
var arr1 = [1,2,3];
var arr2 = arr1.concat();//缺省则创建原数组的副本 [1,2,3]
console.log(arr2);//[1,2,3]
console.log(arr1 === arr2);//false 原数组跟其创建的副本
//-----------------分割线----------------------
console.log(arr1.concat(4));//[1,2,3,4]
console.log(arr1.concat([4,5],[6,7]));//[1,2,3,4,5,6,7]
console.log(arr1)//思考?
//结果是 [1,2,3]
思考一下:concat
方法是浅拷贝还是深拷贝?
插话:后面会出一期讲
(7)splice
方法
silce
与splice
方法名字相似,但是方法使用有着天壤之别,所以要好好区分才行。
该方法功能很强大,可用于删除数组元素,又可以向数组中添加元素,会改变原数组,为变异方法。
情况一 : 缺省 返回一个空数组
var arr = [1,2,3];
console.log(arr.splice());//Array(0)
情况二 : 只有一个参数,将原数组在指定位置进行拆分成两个数组
var arr = [1,2,3,4,5,6];
console.log(arr.splice(2));//Array(4) [3,4,5,6]
console.log(arr);//[1,2]
情况二 : 有两个参数,第一个参数指定删除的起始位置,第二个参数为删除元素的个数。
var arr = [1,2,3,4,5,6];
console.log(arr.splice(2,2));//删除以数组下标为2的两个元素 [3,4]
console.log(arr);//[1,2,5,6]
(8)slice
方法
用于将数组的某个片段切出新数组,不会改动原数组,非变异方法。
使用示例 : silce(start,end);
var arr = [1,2,3,4,5];
console.log(arr.slice(2));//[3,4,5]
console.log(arr);//[1,2,3,4,5]
(9)valueOf
方法
valueOf
方法返回数组对象本身
var arr = [1,2,3];
console.log(arr.valueOf());//[1,2,3]
(10)join
方法
可将所有数组元素结合为一个字符串。
var arr = [1,2,3];
console.log(arr.join());//'1,2,3'
console.log(arr.join(' '));//'1 2 3'
console.log(arr.join(''));//'123'
tips
: 有兴趣的话,可以查阅资料和思考一下参数为NaN
和 undefined
的情况,使用这些数组方法的时候,会发生什么?