在js数组之中,存在着很多程序编程方法的接口,这些接口有助于我们对数组的处理。
一、数组序列化API
包含有两种方法toString() 和 join()
toString() 在默认情况下都会以逗号分隔字符串的形式返回数组项;
join() 使用指定的字符串用来分隔数组字符串。
序列化不仅分隔数组,也可以解决数组浅拷贝的问题。
var age= ["12", "13", "11", "10"];
// 数组转字符串 toString() 以逗号的形式将数组中的元素进行分隔
console.log(age.toString());//输出:[12,13,11,10]
// join() 以自定义的符号将数组中的元素进行分隔
console.log(age.join(' '));//输出:[12 13 11 10]
console.log(age.join(','));//输出:[12,13,11,10]
二、构造函数的API
-
Array.isArray() (判断某个变量是否是一个数组对象 )
-
Array.from() (从类数组对象或者可迭代对象中创建一个新的数组实例。)
-
Array.of() (根据一组参数来创建新的数组实例,支持任意的参数数量和类型)
Array.from():
var arr= Array.from("ABC");
console.log(arr); //输出:["A","B","C"]
Array.of():
var arr = Array.of("A","B","C");
console.log(arr); //输出: ["A","B","C"]
三、对栈与队列的API
API | 作用 | 参数 | 返回值 |
---|---|---|---|
Array.pop( ) | 删除数组最后一个元素 | 无 | 所删除的最后一个数组元素 |
Array.shift( ) | 删除数组第一个元素 | 无 | 返回所删的第一个数组元素 |
Array.unshift( ) | 在数组开头添加一个或多个元素 | 所要添加的元素值 (如:arr.unshift(2)给数组开头添加一个值为2的元素) | 返回添加元素后的新数组 |
Array.push( ) | 在数组末尾添加一个或多个元素 | 所要添加的元素值(使用法同上) | 返回添加元素后的新数组 |
四、排序API
- Array.reverse( ) 颠倒数组中元素的顺序;
- Array.sort( ) 对数组的元素进行排序 ;
Array.prototype.reverse()方法:
var arr = [1,2,3];
arr.reverse();
console.log(arr); //输出:[3,2,1]
Array.prototype.sort()方法:
此api默认排序是按照Ascall编码来对数组元素进行排序,按字母升序排序。而如果想要自定义升降序的排序顺序,则给方法的参数加入函数,在函数里编写排序顺序规则。如举以下例子:
var arr = [40,100,1,5,25,10];
arr.sort(function(a,b){
return b-a
});
console.log(arr) //输出:[100,40,25,10,5,1]
当数组是按字母顺序排列升序时数字“5”是排序在数字“40”之后的,通过函数编写排序顺序后两个数字将按正常数字大小升序排列。
升序与降序的条件:不管是a<b或a>b,当函数return a-b 时,排序结果为升序;当函数return b-a 时,排序结果便为降序。
五、操作API
- Array.concat( ),(用于连接两个或多个数组)
- Array.slice( ) (从已有数组中返回选定元素/提取字符串的某个部分)
- Array.splice( ) (用于添加或删除数组中的元素)
concat()方法:
var arr1 = [1,2,3];
var arr2 = [4,5,6];
var arr3 = arr1.concat(arr2);
var arr4 = arr1.concat(arr2,arr3);
console.log(arr3); //输出:[1,2,3,4,5,6]
console.log(arr4); //输出:[1,2,3,4,5,6,1,2,3,4,5,6]
slice( ) 方法:
此方法无参数,返回值为所截取元素组成的新数组。
var arr = [1,2, 3, 4, 5];
var citrus = arr.slice(1,3); //输出:[2,3]
splice( )方法:
用于添加或删除数组元素。此方法会改变原数组。
//在数组中添加新元素
var arr = [1,2,3,4];
arr.splice(2,0,5,6);//从数组索引位置 2 开始,不删除元素,添加两个新的元素5,6
console.log(arr); //输出:[1,2,5,6,3,4]
// 移除数组的第三个元素,并在数组第三个位置添加新元素"5"和"6"
var arr = ["1", "2", "3", "4"];
arr.splice(2,1,"5","6");
console.log(arr); //输出:["1","2","5","6","4"]
//从数组的第三个位置开始删除数组最后两个元素
var arr = [1,2,3,4];
arr.splice(2,2);
console.log(arr); //输出:[1,2]
六、位置API
- indexOf()
- lastIndexOf()
两方法都是查找元素所在数组位置的方法,只是indexOf是从数组开头往后查找,而lastINdexOf是从数组的末尾往前查找。两方法使用方法一样,参数为所要查找的元素值,返回值为所查元素在数组中下标。如所查找元素没有在数组中,两方法返回值都为-1。
拿indexOf()方法举例:
var arr = [1,2,3,4]
var a = arr.indexOf(2);
console.log(a); //输出:1 (元素'2'位于数组下标为1的位置)
七、迭代API
- every() 检测数组所有元素是否都符合指定条件的元素,返回值为布尔值;
- some() 检测数组中的元素是否存在满足指定条件的元素,返回值为布尔值;
- filter( ) 通过检查指定数组中符合条件的所有元素,所符合条件元素创建一个新的数组;
- map() 用原始数组元素调用函数处理后的值来创建一个新数组;
- forEach() 调用数组的每个元素,并将元素传递给回调函数;
迭代API的参数均为函数,返回值有布尔类型也有返回新数组。
总结
数组作为js其中的一个部分,其所为我们使用的频率很多,在jsd里的分量也很重,而我们在处理数组上,有很多API供我们使用,这不仅方便我们对数组的处理,也挺高了我们代码效率。数组API还有很多,以上则是我们使用频率较高的数组API。