- ★
Array.from()
:从一个类似数组或可迭代对象中创建一个新的数组实例
Array.from('foo'); // ['f','o','o']
Array.from( [1,2,3], x => x+x );// [2,4,6]
Array.from( arraylike, mapFn )
数组去重合并:
function combine(){
let arr = [].concat.apply( [], arguments); // 数组合并
return Array.from( new Set(arr) ); // 数组去重
}
var m = [1, 2, 2], n = [2,3,3];
console.log(combine( m, n )); // [1,2,3]
-
Array.isArray()
:用于确定传递的值是否是一个Array
Array.isArray([1,2,3]); // true
-
Array.of()
:创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型
与Array的区别:
Array.of(7); // [7]
Array(7); // [ , , , , , , ]--7个undefined
Array.of(1,2,3) === Array(1,2,3) // [1,2,3]
- ★
Array.concat()
:用于合并两个或多个数组。不会更改 现有数组,返回一个新 数组
var a = ['a','b'], b = ['c','d'];
a.concat(b) // ['a','b','c','d']
a.concat(b,c,d…)
-
Array.prototype.copyWithin()
:浅复制数组的一部分到同一个数组的另一个位置,并返回它,而不修改其大小。(改变数组)
arr.copyWithin( target, start, end ) // start = 0, end = arr.length
var arr = [1,2,3,4,5]
arr.copyWithin(0,3,4) // [4,2,3,4,5]
arr.copyWithin(1,3) // [4,4,5,4,5]
-
Array.prototype.entries()
:返回一个新的Array Iterator对象,该对象包含数组中每个牵引的键/值对
var arr = ['a','b','c']
var it = arr.entries()
it.next().value // [0,'a']
it.next().value // [1,'b']
-
Array.prototype.every()
:测试数组的所有元素是否通过了指定函数的测试(对数组中对每一项运行给定函数,如果该函数对每一项都返回true,则返回true)
function isBig (value) { return value > 40; }
var arr = [39,40,41];
arr.every(isBig) // false
-
Array.prototype.fill()
:用一个固定值填充一个数组中从起始索引到终止索引内的全部元素,不包括终止索引。(修改数组)
arr.fill( value, start, end ) // start = 0, end = arr.length
var arr = [1,2,3,4]
arr.fill(0,2,4) // [1,2,0,0]
arr.fill(5,1) // [1,5,5,5]
arr.fill(6) // [6,6,6,6]
-
Array.prototype.filter()
:创建一个新 数组,其包含通过所提供函数实现的测试的所有元素(对数组中对每一项运行给定函数,返回该元素中会返回true的项组成的数组)
var words = ['limit','present']
const result = words.filter( word => word.length > 6 ) // ['present']
-
Array.prototype.find()
:返回数组中满足给定函数的第一个元素的值,否则为undefined
var arr = [5,12,18]
var found = arr.find( function(element) { return element > 10; }) // 12
-
Array.prototype.findIndex()
:返回数组中满足给定函数的第一个元素的索引,否则返回-1
arr.findIndex( function(element) { return element > 10 }) // 1
- ★
Array.prototype.forEach()
:对数组中的每个元素执行一次给定函数,没有返回值
arr.forEach( function(value) { console.log(value) }) // 5 12 18
array.forEach( callback( currentValue, index, array ) {…}, this)
currentValue:数组中正在处理的当前元素
index:数组中正在处理的当前元素的索引
array:forEach()正在操作的数组
-
Array.prototype.includes()
:用来判断一个数组是否包含一个指定的值,包含返回true
,不包含返回false
arr.includes( searchElement, fromIndex ) // fromIndex = 0
var arr = ['cat','dog','bat']
arr.includes('cat') // true
arr.includes('at') // false
- ★
Array.prototype.indexOf()
:返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1
arr.indexOf( searchElement, fromIndex ) // fromIndex = 0
var arr = ['cat','dog','bat']
arr.indexOf('cat') // 0
arr.indexOf('bat',2) // 2
arr.indexOf('at') // -1
- ★
Array.prototype.join()
:将一个数组(类数组对象)的所有元素连接成一个字符串并返回这个字符串。(不修改数组)
var arr = ['a','b','c']
arr.join() // a,b,c—默认为','
arr.join('') // abc
arr.join('-') // a-b-c
-
Array.prototype.keys()
:返回一个包含数组中每个索引键的Array Iterator对象
var arr = ['a','b','c']
var it = arr.keys()
for(let key of it){
console.log(key) // 0 1 2
}
-
Array.prototype.lastIndexOf()
:返回指定元素在数组中的最后一个索引,不存在返回-1,从后向前查
arr.lastIndexOf( searchElement, fromIndex ) // fromIndex = arr.length - 1
var arr = [1,2,3,1]
arr.lastIndexOf(1) // 3
- ★
Array.prototype.map()
:创建一个新 数组,对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组
var newArr = arr.map(function callback( currentValue, index, array ) { return … })
//currentValue:callback数组中正在处理的当前元素
//index:callback数组中正在处理的当前元素的索引
//array:callback map方法被调用的数组中
var arr = [1,2,3,4]
const map1 = arr.map( x => x*2 ); // [2,4,6,8]
console.log(arr) // [1,2,3,4]
- ★
Array.prototype.pop()
:从数组中删除最后一个元素,并返回该元素的值。更改数组长度
var arr = ['a','b','c']
arr.pop() // 'c',若当前数组为空时,返回undefined
console.log(arr) // ['a','b']
- ★
Array.prototype.push()
:将一个或多个元素添加到数组的末尾,并返回新数组的长度
var arr = ['a','b','c'], arr2 = ['e','f']
arr.push('d') // 4
console.log(arr) // ['a','b','c','d']
Array.prototype.push.apply( arr, arr2 ) // 合并两个数组
console.log(arr) // ['a','b','c','d','e','f']—arr太大时不要用,因为一个函数能接受的参数个数有限
- ★
Array.prototype.reduce()
:对累计器和数组中的每个元素(从左到右)应用一个函数,将其简化为单个值
arr.reduce( function( accumulator, currentValue, currentIndex, array ) { return … }, initialValue )
//accumulator:累计器,第一次将第一个数或initialValue(优先)作为accumulator,之前为运行一次function的结果
//currentValue:当前值
//其余可选
const arr = [1,2,3,4]
const reducer = ( acc, currentValue) => acc + currentValue
console.log(arr.reduce(reducer)) // 10
console.log(arr.reduce(reducer), 5) // 15,第一次acc为5
将二维数组转一维数组
var flattened = [[0,1],[2,3],[4,5]].reduce(
function (a,b) {
return a.concat(b)
}, [])
箭头简化=> var flat = [[0,1],[2,3],[4,5]].reduce((cacc, cur) => acc.concat(cur),[])
计算数组中每个元素出现都次数
var names = ['A','B','T','B','A'];
var countedNames = names.reduce( function( allNames, name) {
if(name in allNames){
allNames[name]++
} else {
allNames[name] = 1
}
return allNames
}, {})
console.log(countedNames) // {'A': 2, 'B': 2, 'T': 1}
- ★
Array.prototype.reduceRight()
:与reduce()
一样,只是从右到左
const arr = [[0,1],[2,3]].reduceRight( (acc, cur ) => acc.concat(cur))
console.log(arr) // [2,3,0,1]
- ★
Array.prototype.reverse()
:将数组中元素的位置颠倒,反转数组。(修改数组)
var arr = ['a','b','c']
arr.reverse() // ['c','b','a']
- ★
Array.prototype.shift()
:从数组中删除第一个元素,并返回该元素的值。更改数组长度,数组为空返回undefined
var arr = [1,2,3]
arr.shift() // 1
console.log(arr) // [2,3]
- ★
Array.prototype.slice()
:返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象,且原始数组不会被修改
arr.slice() // [0,end]
arr.slice(begin) // [begin,end]
arr.slice(begin,end) // [begin,end]
var arr = ['a','b','c','d']
arr.slice(2) // ['c','d']
arr.slice(1,3) // ['b','c']
console.log(arr) // ['a','b','c','d']
-
Array.prototype.some()
: 对数组中的每一项运行给定的函数,如果该函数对任意一项返回true
,则返回true
。(不改变数组)对于放在空数组上的任何条件都返回false
arr.some( function( currentValue, index, array ) { return … })
var arr = [1,2,3]
arr.some(function(element){ return element % 2 === 0 }) // true
- ★
Array.prototype.sort()
:使用就地算法对数组中对元素进行排序,并返回数组。(修改数组)排序不一定是稳定的。默认排序顺序是根据字符串Unicode码点
arr.sort() // 默认排序
arr.sort(compareFunction) // 按函数指定顺序排序
var arr = [1,30,4,21]
arr.sort() // [1,21,30,4] === arr
function compareNumber(a,b) { return a-b }
arr.sort(compareNumber) // [1,4,21,30]
- ★
Array.prototype.splice()
:通过删除现有元素或新增新元素来更改一个数组的内容
arr.splice( start, deleteCount, item1, item2…)
//start:指定修改开始的位置(从0开始),若超过arr.length,则从数组末尾开始;若负数的绝对值大于arr.length,则从0项开始
//deleteCount:整数,要删除的元素的**个数**,0不移除,deleteCount = arr.length - start
//item:要添加到数组的元素
返回由被删除得元素组成得一个数组。如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除的元素,则返回空数组。
var arr = [1,2,3,4,5,6]
arr.splice(1,0,10) // [1,10,2,3,4,5,6]
arr.splice(4,1,20) // [1,10,2,3,20,5,6]
arr.splice(6,1) // [1,10,2,3,20,5]
-
Array.prototype.toLocaleString()
:返回一个字符串表示数组中的元素。数组中的元素将使用各自的toLocaleString
方法转成字符串,这些字符串将使用一个特定语言环境的字符串隔开
arr.toLocaleString( locales, options )
var arr = [1,'a',new Data('21 Dec 1997 14:12:00 UTC')]
arr.toLocaleString('en',{ timeZone: 'UTC'}) // '1,a,12/21/1997,2:12:00 PM'
- ★
Array.prototype.toString()
:返回一个字符串,表示指定的数组及其元素
var arr = [1,2,'a','1a']
arr.toString() // '1,2,a,1a'
- ★
Array.prototype.unshift()
:将一个或多个元素添加到数组的开头,并返回新数组的长度,修改数组
var arr = [1,2,3]
arr.unshift(4,5) // 5
console.log(arr) // [4,5,1,2,3]
- ★
Array.prototype.values()
:返回一个新的Array Iterator对象,该对象包含数组每个索引的值
const arr = ['a','b','c']
const it = arr.values()
for(const value of it){ console.log(value) } // 'a' 'b' 'c'