[关闭]
@Sakura-W 2016-10-23T12:06:26.000000Z 字数 3987 阅读 1443

数组常用方法总结

Javascript


一、静态方法

Array.from()
该方法可以将一个类数组对象或者可遍历(实现了Iterator接口)对象转换成真正的数组(ES6语法特性)

语法:

  1. //arrayLike即想要转换成数组的类数组对象或者可遍历对象
  2. //mapFn,可选参数,如果指定了该参数,则最后生成的数组会经过该函数的加工处理后返回
  3. //thisArg,可选参数,执行mapFn函数时this的值
  4. Array.from(arrayLike, [mapFn], [thisArg]);

例子:

  1. //将Set对象转换为数组
  2. var a = Array.from(new Set(["foo", window]));//a为["foo", window]
  3. //将字符串转换为数组
  4. Array.from("foo");//返回值为["f", "o", "o"]

Array.isArray()
该方法用于判断某个值是否为Array对象,如果是,则放回true,否则返回false

语法:

  1. //value为要检测的值
  2. Array.isArray(value);

例子:

  1. Array.isArray([]);//true
  2. Array.isArray([1]);//true
  3. Array.isArray(Array.prototype);//true,因为Array.prototype也是一个数组

兼容:

  1. if(!Array.isArray){
  2. Array.isArray = function(arg){
  3. return Object.prototype.toString.call(arg) === "[object Array]";
  4. };
  5. }

二、实例方法

创建示例数组:

  1. var fruits = ["Apple", "Banana"];

2.1 添加与删除

push()
添加元素到数组的末尾,返回原数组:

  1. var newLength = fruits.push("Orange");//["Apple", "Banana", "Orange"]

pop()
删除数组末尾的元素,返回被删除的元素:

  1. var last = fruits.pop();//"Orange"

shift()
删除数组头部元素,返回被删除的元素:

  1. var first = fruits.shift();//"Apple"

unshift()
添加元素到数组头部,返回原数组:

  1. var newLength = fruits.unshift("Strawberry");//["Strawberry", "Apple", "Banana", "Orange"]

2.2 遍历数组及处理

forEach()
该方法让数组的每一项都执行一次给定的函数,改变原数组,没有返回值:

  1. //item是指当前数组项的值
  2. //index指当前数组项的下标
  3. //array是指数组本身
  4. fruits.forEach(function(item, index, array){
  5. console.log(item, index);
  6. });

map()
该方法返回一个由原数组的每个元素调用一个指定方法后的返回值组成的新数组(与forEach唯一的区别在于有返回值),不改变原数组:

  1. var numbers = [1, 4, 9];
  2. var roots = numbers.map(function(item, index, array){
  3. return Math.sqrt(item);
  4. });//[1, 3, 9]

some()
测试数组中某些元素是否能通过指定函数的测试。

数组中的每个元素执行一次callback函数,直到找到一个使得callback返回一个"真值"(可以转化为布尔值true的值)的元素,如果找到一个这样的值,some将会立即返回true,否则返回false,不改变原数组:

  1. var passed = [2, 5, 8, 1, 4].some(function(item, index, array){
  2. return (item >= 10);
  3. });//false

every()
该方法测试数组的所有元素是否通过了指定函数的测试。

数组中的每个元素执行一次callback函数,直到找到一个使callback返回false的元素,如果发现这样一个元素,every方法将会立即返回false,否则返回true。不改变原数组

  1. var passed = [12, 54, 18].every(function(item, index, array){
  2. return (item >= 10);
  3. });//true

filter()
该方法使用指定的函数测试所有元素,并创建一个包含所有通过测试的元素的新数组。

该方法为数组中的每个元素调用一次callback方法,并利用所有使得callback返回true的元素创建一个新数组:

  1. var filter = [12, 5, 8, 130, 44].filter(function(item, index, array){
  2. return (item >= 10);
  3. });//[12, 130, 44]

2.3 查找

find()
如果数组中某个元素满足测试条件,该方法就会返回那个元素的值,如果没有满足条件的元素,则返回undefined.

find方法对数组中的每一项元素执行一次callback函数,直至有一个callback返回true。当找到了这样一个元素后,该方法会立即返回这个元素的值,否则返回undefined。

  1. var fruit = ["apple", "orange", "banana"];
  2. var target = fruit.find(function(item, index, array){
  3. return item === "orange";
  4. });//"orange"

findIndex()
用来查找数组中某指定元素的索引,如果找不到指定的元素则返回-1。

findIndex()方法对数组中的每一个元素执行一次回调函数直至有一个回调函数返回真值。如果找到了一个这样的元素,则findIndex()将会立刻返回这个元素的索引。否则返回-1。:

  1. ["apple", "orange", "banana"].findIndex(function(item, index, array){
  2. return item === "orange";
  3. });//1

indexOf()
该方法返回给定元素能在数组中找到的第一个索引,否则返回-1

  1. ["a", "b", "a", "c"].indexOf("a");//0

lastIndexOf()
该方法返回指定元素在数组中的最后一个的索引,如果不存在则返回-1,即从数组后面向前查找

  1. ["a", "b", "a", "c"].lastIndexOf("a");//2

includes()
该方法用于判断当前数组是否包含某指定的值,如果有,则返回true,否则返回false

语法:

  1. var boolean = array.includes(searchElement[, fromIndex]);

例子:

  1. [1, 2, 3].includes[3, 0];//true

2.4 其他方法

concat()
该方法接受数组(或者值)作为参数,并合并为一个新数组返回

  1. var alpha = ["a", "b", "c"],
  2. numeric = [1, 2, 3],
  3. numeric2 = [4, 5, 6];
  4. var alphaNumeric = alpha.concat(numeric);//["a", "b", "c", 1, 2, 3]
  5. var alphaNumeric2 = alpha.concat(numeric, numeric2);//["a", "b", "c", 1, 2, 3, 4, 5, 6]

fill()
使用该方法可以将一个数组中指定区间的所有元素的值都替换成某个固定的值

语法:

  1. //具体要填充的元素区间是[start, end),一个半开半闭区间
  2. arr.fill(value[, start = 0 [, end = this.length]]);

例子:

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

join()
将数组中的所有元素连接成一个字符串

语法:

  1. str = arr.join([separator = ','])

例子:

  1. var a = ["wind", "rain", "fire"];
  2. var myArray = a.join(",");//"wind,rain,fire"

reduce()
接收一个函数作为累加器,数组中的每个值从左到右合并,最终为一个值

语法:

  1. arr.reduce(callback, [initialValue])

例子:

  1. var total = [0, 1, 2, 3].reduce(function(previousValue, currentValue, index, array){
  2. return previousValue + currentValue;
  3. });//6

reverse()
颠倒数组中的位置:第一个元素会变成最后一个元素,最后一个元素变成第一个元素

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

slice()
浅复制数组的一部分到一个新数组,并返回这个新数组

语法:

  1. //提取的区域是一个半开半闭的区间:[begin, end)
  2. arr.slice([begin[, end]])

例子:

  1. var citrus = ["banana", "orange", "lemon", "apple"].slice(1, 3);//["orange", "lemon"]

splice()
该方法用新元素替换旧元素,以此修改数组的内容.返回由被删除的元素组成的一个数组

语法:

  1. //start指从数组的哪一位开始修改内容
  2. //deleteCount表示要移除的数组的元素
  3. //itemN要添加进数组的元素,如果不指定,则该方法只删除数组元素
  4. array.splice(start, deleteCount[, item1[, item2[, ...]]])
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注