JavaScript Array 对象方法

1 minute read

Array.prototype.pop

删除并返回数组的最后一个元素

[1,2,3].pop();
// 3

Array.prototype.push

向数组的末尾添加一个或更多元素,并返回新的长度

[1,2,3].push(4, 5);
// 5

Array.prototype.shift

删除并返回数组的第一个元素

[1, 2, 3].shift()
// 1

Array.prototype.unshift

压入一个或多个元素到数组首部

var a = [1, 2, 3];
a.unshift(4, 5);

console.log(a); // [4, 5, 1, 2, 3]

Array.prototype.slice

返回数组中选定的元素,选择区间为 [start, end), end 省略则选至尾部。选中元素放入新数组返回

[5, 4, 3, 2, 1].slice(1, 3); // [4, 3]

Array.prototype.concat

连接两个或更多的数组,参数可以是元素也可以是数组,不改变原数组,合并后结果放入新数组返回。

var a = [1, 2, 3];
var b = [4, 5];
var c= 6;

a.concat(b); // [1, 2, 3, 4, 5]
a.concat(b, c) // [1, 2, 3, 4, 5, 6]

Array.prototype.join

把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。

['a', 'b', 'c'].join(','); // a,b,c

Array.prototype.reverse

颠倒数组中元素的顺序,会在原数组上改变

var a = [1, 2, 3];
a.reverse();

console.log(a); // [3, 2, 1]

Array.prototype.sort

对数组的元素进行排序,在原数组中操作,可接收一个排序比较函数,使用方式为 arr.sort(sortby)

sortby 为 function 类型可选,对于数值数组,默认升序。若改变排序需在传入函数声明两个元素的比较规则:

  • 若 a < b,返回小于 0 的值,表示 a 排在 b 前面
  • a == b 返回 0
  • a > b, 返回大于 0 的值
var a = [3, 2, 5, 1, 4, 6];
a.sort(function(a, b) {
  return (a < b) ? 1 : (a === b) ? 0 : -1;
})

console.log(a); // [6, 5, 4, 3, 2, 1]

Array.prototype.splice

删除元素,并向数组添加新元素。

arrayObject.splice(index, howmany, item1, …, itemX)

  • index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
  • howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
  • item1, …, itemX 可选。向数组添加的新项目。
var a = [1, 2, 3, 4, 5];
var sp = a.splice(1, 2, 'a', 'b', 'c');

console.log(sp); // [2, 3]
console.log(a); // [1, 'a', 'b', 'c', 4, 5]

Array.prototype.indexOf

查找数组内是否存在某元素,并返回索引,未查询到返回 -1

Array.prototype.map

接收一个处理函数,将数组按照此处理函数映射为另外一个数组,函数要有返回值,否则返回数组内值无定义

var marr = [1, 2, 3].map(function(x) {
  return x * x;
})

console.log(marr); // [1, 4, 9]

Array.prototype.reduce

接收一个函数和初始状态(可选),从左到右依次对数组元素进行规约合并运算,最后累计运算结果,初始状态未传入时则自动采用第一个元素作为初始值

[1, 2, 3, 4, 5].reduce(function(acc, em, index, arr) {
  return acc + em;
}, 0); // 15

函数还有一个对应的从右开始规约的函数 Array.prototype.reduceRight

Number.toString(radix)

以 radix 为基(2, 36), 返回该进制下数值对应的字符串

(36).toString(36); // '10'