length
表示一个无符号 32-bit 整数,返回一个数组中的元素个数。Array.from()
方法可以将一个类数组对象或可遍历对象转换成真正的数组。Array.of()
方法会将它的任意类型的多个参数放在一个数组里并返回。Array.of()
和 Array
构造函数不同的是:在处理数值类型的参数时,Array.of(42)
创建的数组只有一个元素,即 42
, 但 Array(42)
创建了42个元素,每个元素都是undefined。示例
Array.of(1); // [1]
Array.of(1, 2, 3); // [1, 2, 3]
Array.of(undefined); // [undefined]
copyWithin()
方法会浅拷贝数组的部分元素到同一数组的不同位置,且不改变数组的大小,返回该数组。every()
方法测试数组的所有元素是否都通过了指定函数的测试。arr.every(callback[, thisArg])
callback
用来测试每个元素的函数。thisArg
执行 callback
时使用的 this
值。callback
被调用时传入三个参数:元素值,元素的索引,原数组。检测所有数组元素的大小
下例检测数组中的所有元素是否都大于 10。
function isBigEnough(element, index, array) {
return (element >= 10);
}
var passed = [12, 5, 8, 130, 44].every(isBigEnough);
// passed is false
passed = [12, 54, 18, 130, 44].every(isBigEnough);
// passed is true
fill()
方法,可以将一个数组中指定区间的所有元素的值, 都替换成或者说填充成为某个固定的值。参数
start
, end
) , 一个半开半闭区间.fill
方法接受三个参数 value
, start
以及 end
. start
和 end
参数是可选的, 其默认值分别为 0
和 this
对象的 length 属性值
.start
是个负数, 则开始索引会被自动计算成为 length+start, 其中
length
是 this
对象的 length 属性值
. 如果 end
是个负数, 则结束索引会被自动计算成为 length+end
.示例
[1, 2, 3].fill(4) // [4, 4, 4]
[1, 2, 3].fill(4, 1) // [1, 4, 4]
[1, 2, 3].fill(4, 1, 2) // [1, 4, 3]
[1, 2, 3].fill(4, 1, 1) // [1, 2, 3]
[1, 2, 3].fill(4, -3, -2) // [4, 2, 3]
[1, 2, 3].fill(4, NaN, NaN) // [1, 2, 3]
Array(3).fill(4); // [4, 4, 4]
filter()
方法使用指定的函数测试所有元素,并创建一个包含所有通过测试的元素的新数组。filter
不会改变原数组。callback
用来测试数组的每个元素的函数。调用时使用参数 (element, index, array)。thisArg
可选。执行 callback
时的用于 this
的值。
filter
为数组中的每个元素调用一次 callback
函数,并利用所有使得 callback
返回 true 或 等价于 true 的值 的元素创建一个新数组。callback
只会在已经赋值的索引上被调用,对于那些已经被删除或者从未被赋值的索引不会被调用。那些没有通过 callback
测试的元素会被跳过,不会被包含在新数组中。callback
被调用时传入三个参数:- 元素的值
- 元素的索引
- 被遍历的数组
filter
创建了一个新数组,该数组的元素由原数组中值大于 10 的元素组成。function isBigEnough(element) {
return element >= 10;
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// filtered is [12, 130, 44]
find()
方法就会返回那个元素的第一个值,如果没有满足条件的元素,则返回 undefined
。find方法不会改变数组。callback 同上
findIndex()
方法用来查找数组中某指定元素的索引, 如果找不到指定的元素, 则返回 -1. (2015年的方法)forEach()
方法对数组的每个元素执行一次提供的函数(回调函数)。
语法
array.forEach(callback[, thisArg])
参数
callback
函数为每个元素执行,接收三个参数:thisArg
可选用作
this的
值(参考对象)。forEach
方法按升序为数组中含有效值的每一项执行一次callback
函数,那些已删除(使用delete
方法等情况)或者从未赋值的项将被跳过(但不包括那些值为 undefined 的项)。
callback
函数会被依次传入三个参数:- 数组当前项的值
- 数组当前项的索引
- 数组对象本身
如果给forEach传递了thisArg
参数,它将作为 callback
函数的执行上下文,类似执行如下函数callback.call(thisArg, element, index, array)
。如果 thisArg
值为 undefined
或 null
,函数的 this
值取决于当前执行环境是否为严格模式(严格模式下为 undefined,非严格模式下为全局对象)。
forEach
遍历的范围在第一次调用 callback
前就会确定。调用forEach
后添加到数组中的项不会被 callback
访问到。如果已经存在的值被改变,则传递给 callback
的值是 forEach
遍历到他们那一刻的值。已删除的项不会被遍历到。
Array.every
或 Array.some
。forEach
为数组中的元素执行一次 callback
函数,不像 every
和 some
,它总是返回 undefined
。
下面的代码会为每一个数组元素输出一行记录:
function logArrayElements(element, index, array) {
console.log("a[" + index + "] = " + element);
}
[2, 5, 9].forEach(logArrayElements);
// logs:
// a[0] = 2
// a[1] = 5
// a[2] = 9
includes()
方法用来判断当前数组是否包含某指定的值,如果是,则返回 true
,否则返回 false
。searchElement
需要查找的元素值。fromIndex
可选参数。从该索引处开始查找 searchElement
,默认为 0。Boolean
。[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true
[1, 2, NaN].includes(NaN); // true
indexOf()方法
返回给定元素能找在数组中找到的第一个索引值,否则返回-1join()
方法将数组中的所有元素连接成一个字符串。separator
可选,用于指定连接每个数组元素的分隔符。分隔符会被转成字符串类型;如果省略的话,默认为一个逗号。如果 seprator
是一个空字符串,那么数组中的所有元素将被直接连接。var a = ['Wind', 'Rain', 'Fire'];
var myVar1 = a.join(); // myVar1的值变为"Wind,Rain,Fire"
var myVar2 = a.join(', '); // myVar2的值变为"Wind, Rain, Fire"
var myVar3 = a.join(' + '); // myVar3的值变为"Wind + Rain + Fire"
var myVar4 = a.join(''); // myVar4的值变为"WindRainFire"
keys()
方法返回一个数组索引的迭代器。2015map()
方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组。map
不修改调用它的原数组本身下面的代码创建了一个新数组,值为原数组中对应数字的平方根。
var numbers = [1, 4, 9];
var roots = numbers.map(Math.sqrt);
/* roots的值为[1, 2, 3], numbers的值仍为[1, 4, 9] */
反转字符串
var str = '12345';
Array.prototype.map.call(str, function(x) {
return x;
}).reverse().join('');
// Output: '54321'
// Bonus: use '===' to test if original string was a palindrome
pop()
方法删除一个数组中的最后的一个元素,并且返回这个元素。push()
方法添加一个或多个元素到数组的末尾,并返回数组新的长度(length 属性值)。reduce()
方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值。reduceRight()
方法接受一个函数作为累加器(accumulator),让每个值(从右到左,亦即从尾到头)缩减为一个值。(与 reduce()
的执行方向相反)reverse()
方法颠倒数组中元素的位置。第一个元素会成为最后一个,最后一个会成为第一个。var myArray = ['one', 'two', 'three'];
myArray.reverse();
console.log(myArray) // ['three', 'two', 'one']
shift()
方法删除数组的 第一个 元素,并返回这个元素。该方法会改变数组的长度。slice()
方法会浅复制(shallow copy)数组的一部分到一个新的数组,并返回这个新数组。some()
方法测试数组中的某些元素是否通过了指定函数的测试。例子:测试数组元素的值
下面的例子检测在数组中是否有元素大于 10。
function isBigEnough(element, index, array) {
return (element >= 10);
}
var passed = [2, 5, 8, 1, 4].some(isBigEnough);
// passed is false
passed = [12, 5, 8, 1, 4].some(isBigEnough);
// passed is true
sort()
方法对数组的元素做原地的排序,并返回这个数组。 sort 排序可能是不稳定的。默认按照字符串的Unicode码位点(code point)排序。如果没有指明 compareFunction
,那么元素会按照转换为的字符串的诸个字符的Unicode位点进行排序。例如 "Banana" 会被排列到 "cherry" 之前。数字比大小时,9 出现在 80 之前,但这里比较时数字会先被转换为字符串,所以 "80" 比 "9" 要靠前。
var fruit = ['cherries', 'apples', 'bananas'];
fruit.sort(); // ['apples', 'bananas', 'cherries']
var scores = [1, 10, 2, 21];
scores.sort(); // [1, 10, 2, 21]
// Watch out that 10 comes before 2,
// because '10' comes before '2' in Unicode code point order.
var things = ['word', 'Word', '1 Word', '2 Words'];
things.sort(); // ['1 Word', '2 Words', 'Word', 'word']
// In Unicode, numbers come before upper case letters,
// which come before lower case letters.
toLocaleString()
返回一个字符串表示数组中的元素。数组中的元素将使用各自的 toLocaleString
方法转成字符串,这些字符串将使用一个特定语言环境的字符串(例如一个逗号 ",")隔开。数组中的元素将会使用各自的 toLocaleString 方法:
toLocaleString
var number = 1337;
var date = new Date();
var myArr = [number, date, "foo"];
var str = myArr.toLocaleString();
console.log(str);
// 输出 "1337,2015/2/27 下午8:29:04,foo"
// 假定运行在中文(zh-CN)环境,北京时区
toString()
返回一个字符串,表示指定的数组及其元素。Array
对象覆盖了 Object
的 toString
方法。对于数组对象,toString
方法返回一个字符串,该字符串由数组中的每个元素的 toString()
返回值经调用 join()
方法连接(由逗号隔开)组成。例如,下面的代码创建了一个数组,然后使用 toString
方法把该数组转成一个字符串。
var monthNames = ['Jan', 'Feb', 'Mar', 'Apr'];
var myVar = monthNames.toString(); // assigns "Jan,Feb,Mar,Apr" to myVar.
unshift()
方法在数组的开头添加一个或者多个元素,并返回数组新的 length 值。values()
方法返回一个新的 Array Iterator
对象,该对象包含数组每个索引的值。