Array
语法
[element0, element1, ..., elementN ]
new Array ( element0 , element1 [ , ... [ , elementN ] ] )
new Array ( arrayLength )
属性
Array.length
Array
构造函数的length属性,其值为1(注意该属性为静态属性,不是数组实例的length属性)Array.prototype
数组的原型对象,可以为所有数组对象添加属性
方法
Array.isArray() 判断某个变量是否为一个数组对象
Array.from() 从类数组对象或者可迭代对象中创建一个新的数组实例
Array.of() 根据一组参数来创建新的数组实例,支持任意的参数数量和类型
数组实例
属性
Array.prototype.constructor
所有的数组实例都继承了这个属性,它的值就是Array
,表明了所有的数组都是由Array
构造出来的
Array.prototype.length
因为 Array.prototype
也是个数组,所以它也有 length
属性,这个值为 0
,因为它是个空数组
方法
Array.prototype.push(value,...) 添加元素到数组的末尾,并返回添加新元素后的数组长度
Array.prototype.pop() 删除数组末尾的元素,并返回该元素
Array.prototype.unshift(value) 添加元素到数组的头部,并返回添加新元素后的数组长度
删除数组最前面(头部)的元素,并返回该元素(shift:改变、去掉、转移)Array.prototype.shift()
Array.prototype.slice(
start_index,upto_index
)
抽取原数组的一部分,返回一个新数组,原数组不变。 (slice:切片、切下)
第一个参数为其实位置(从0开始),第二个参数为终止为止(但该位置的元素本身不包含在内)。若省略第二个参数,则一直返回到原数组的最后一个元素。负数表示倒数第几个元素
Array.prototype.splice(index,remove_count, addElement1,addElement2,...)
在任意的位置给数组删除或添加任意个元素,返回值是被删除的元素。(splice:胶接、粘接、剪接)
第一个参数是删除的起始位置,第二个参数是被删除元素的个数,若后面还有更多的参数,它们是要在被删除的位置添加的新数组元素
- Array.prototype.indexOf(item,index)
返回数组中第一个与指定值相等的元素的索引,如果找不到则返回 -1。第二个参数表示搜索的开始位置
Array.prototype.lastIndexOf()
返回数组中最后一个(从右边数第一个)与指定值相等的元素的索引,如果找不到这样的元素,则返回 -1
Array.prototype.includes()
判断当前数组是否包含某指定的值,如果是返回
true
,否则返回false
Array.prototype.concat(value,...)
合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组(浅拷贝)
Array.prototype.join(
separator
)
返回以参数作为分隔符,将所有数组元素组成的一个字符串;若不提供参数,则默认用逗号分隔
Array.prototype.sort
([compareFunction])
对数组成员进行排序,默认无参是按照字典顺序(Unicode)排序。排序后,原数组将被改变。
若传入一个函数作为参数,表示按照自定义方法进行排序。该函数本身接受两个参数,表示进行比较的两个元素。如果返回值大于0,表示第一个元素排在第二个元素后面;其他情况下,都是第一个元素排在第二个元素前面。
Array.prototype.reverse()
颠倒数组中元素的排列顺序,即原先的第一个变为最后一个,原先的最后一个变为第一个
Array.prototype.toLocaleString()
Object.prototype.toLocaleString()
方法Array.prototype.toString()
Object.prototype.toString()
方法Array.prototype.forEach(
function(item, index, array){...}
)
遍历数组的所有成员。参数是一个函数,它接受三个参数(当前位置的值、当前位置的编号和整个数组)
Array.prototype.map(
function(item, index, array){...}
)
默认(无参)对数组的所有成员依次调用一个函数,根据函数结果返回一个新数组
map方法接受一个函数作为参数。该函数有三个参数,分别是当前成员、当前位置和数组本身
Array.prototype.every()
如果数组中的每个元素都满足测试函数,则返回
true
,否则返回 false
Array.prototype.some()
如果数组中至少有一个元素满足测试函数,则返回 true,否则返回 false
Array.prototype.filter()
将所有在过滤函数中返回 true
的数组元素放进一个新数组中并返回
Array.prototype.reduce()
从左到右为每个数组元素执行一次回调函数,并把上次回调函数的返回值放在一个暂存器中传给下次回调函数,并返回最后一次回调函数的返回值
Array.prototype.reduceRight()
从右到左为每个数组元素执行一次回调函数,并把上次回调函数的返回值放在一个暂存器中传给下次回调函数,并返回最后一次回调函数的返回值
Array.prototype.find()
找到第一个满足测试函数的元素并返回那个元素的值,如果找不到,则返回 undefined
Array.prototype.findIndex()
找到第一个满足测试函数的元素并返回那个元素的索引,如果找不到,则返回 -1
Array.prototype.keys()
返回一个数组迭代器对象,该迭代器会包含所有数组元素的键
Array.prototype.values()
返回一个数组迭代器对象,该迭代器会包含所有数组元素的值
Array.prototype.entries()
返回一个数组迭代器对象,该迭代器会包含所有数组元素的键值对
Array.prototype[@@iterator]()
get Array[@@species]
例子:
1.slice() 可以把slice当作创建当前数组的子数组。slice返回一个新的数组
它的参数代表数组的位置,当只有一个参数时返回从该位置到数组末尾的子数组,当有两个参数时返回起始位置到结束位置-1的子数组
var arr=["red","green","blue","yellow"]; var arr1=arr.slice(1); var arr2=arr.slice(1,3); console.log(arr1);//["green","blue","yellow"] console.log(arr2);//["green","blue"]
2.splice() splice既可以实现删除,也可以实现插入,还可以实现替换。splice在原数组上进行修改,并返回删除的项
它接受三个参数:要删除的第一项的位置,要删除的项数,要替换的新数据。如果指定前两个参数就可以实现删除,如果指定三个参数并且第二个参数为0,就是实现了插入,如果指定了三个参数就实现了替换。。
var arr=["red","green","blue","yellow"]; arr.splice(0,2);//删除数组中的前两项 console.log(arr);//["blue","yellow"] arr.splice(0,0,"red","green");//插入 console.log(arr);//["red","green","blue","yellow"] arr.splice(0,1,"black");//替换掉第一个元素 console.log(arr);//["black","green","blue","yellow"]
摘自:https://microzz.com/2017/04/20/jsobject/
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array
https://www.jianshu.com/p/962ffdae7bd8