【JS】Array.of() 创建数组

JavaScript012

【JS】Array.of() 创建数组,第1张

Array.of() 的作用是 创建数组

创建数组本来已经有 字面量 Array构造函数 等方法,但由于 Array构造函数 创建数组时有一些怪异的行为,所以 ES6 添加了 Array.of() 来弥补 Array构造函数 的不足。

以上是 Array构造函数 的用法,也是 Array构造函数 的怪异行为。

new Array() 当只传入一个参数时,不能传入负数,也不能传入浮点数。

在使用 new Array 时,一不小心就会创建出稀疏数组。这个动作会产生一些诡异的“空槽”行为,这也是JS数组广为人所诟病的一点。

Array.of() 取代了 Array() 成为数组的推荐函数形式构造器,因为 Array.of() 并没有这个特殊的单一数值型参数值的问题。

Array.of() 总是返回参数值组成的数组。如果没有参数就返回一个空数组。

所以说,Array.of() 的行为比 Array() 更统一。

如果有一个回调函数需要传入的参数封装为数组,而且不能保证传入的值一定不是0或正整数,Array.of()可以完美解决这个问题。

如果需要构建 Array 的子类,并且想要在子类实例中创建和初始化元素。

这里用了reduce方法,这个方法是Array的,这里用 this.reduce 是因为 Calculator 继承了 Array。

Array.reduce的使用方法可以看下面的链接

【JS】遍历数组的常用方法(举例版)

1、数组的创建

var arrayObj = new Array() //创建一个数组

var arrayObj = new Array([size]) //创建一个数组并指定长度,注意不是上限,是长度

var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]) 创建一个数组并赋值

要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。

2、数组的元素的访问

var testGetArrValue=arrayObj[1]//获取数组的元素值

arrayObj[1]= "这是新值"//给数组元素赋予新的值

3、数组元素的添加

arrayObj. push([item1 [item2 [. . . [itemN ]]]])// 将一个或多个新元素添加到数组结尾,并返回数组新长度

arrayObj.unshift([item1 [item2 [. . . [itemN ]]]])// 将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度

arrayObj.splice(insertPos,0,[item1[, item2[, . . . [,itemN]]]])//将一个或多个新元素插入到数组的指定位置,插入位置的元素自动后移,返回""。

4、数组元素的删除

arrayObj.pop()//移除最后一个元素并返回该元素值

arrayObj.shift()//移除最前一个元素并返回该元素值,数组中元素自动前移

arrayObj.splice(deletePos,deleteCount)//删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素

5、数组的截取和合并

arrayObj.slice(start, [end])//以数组的形式返回数组的一部分,注意不包括 end 对应的元素,如果省略 end 将复制 start 之后的所有元素

arrayObj.concat([item1[, item2[, . . . [,itemN]]]])//将多个数组(也可以是字符串,或者是数组和字符串的混合)连接为一个数组,返回连接好的新的数组

整理:www.mls169.com

6、数组的拷贝

arrayObj.slice(0)//返回数组的拷贝数组,注意是一个新的数组,不是指向

arrayObj.concat()//返回数组的拷贝数组,注意是一个新的数组,不是指向

7、数组元素的排序

arrayObj.reverse()//反转元素(最前的排到最后、最后的排到最前),返回数组地址

arrayObj.sort()//对数组元素排序,返回数组地址

8、数组元素的字符串化

arrayObj.join(separator)//返回字符串,这个字符串将数组的每一个元素值连接在一起,中间用 separator 隔开。

toLocaleString 、toString 、valueOf:可以看作是join的特殊用法,不常用