阅读 92

Array对象 常用 API

Array对象

生成实例对象

var a = new Array()
复制代码

属性

a.length  //长度
复制代码

判断

Array.isArray(a)  // true / false
复制代码

用来判断一个值是否为数组

方法

Array.valueof()
复制代码

返回数组本身

Array.toString()
复制代码
返回数组的字符串形式
复制代码

枚举

keys()、values()、entries()
复制代码

转换

Array.from(object, mapFunction, thisValue);

var setObj = new Set(["a", "b", "c"]);
var objArr = Array.from(setObj);
objArr[1] == "b";  // true


var arr = Array.from([1, 2, 3], x => x * 10);
// arr[0] == 10;
// arr[1] == 20;
// arr[2] == 30;
复制代码

方法是用于类似数组的对象(即有length属性的对象)和可遍历对象转为真正的数组。

参数描述
object必需,要转换为数组的对象。
mapFunction可选,数组中每个元素要调用的函数。
thisValue可选,映射函数(mapFunction)中的 this 对象。
Array.of();

let arr1 = Array.of(1,2,3); // [1, 2, 3]
复制代码

方法是将一组值转变为数组,参数不分类型,只分数量,数量为0返回空数组

增删

Array.push(12)
复制代码

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

Array.pop()
复制代码

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

Array.unshift(12)
复制代码

向数组的开头添加一个或多个元素,并返回新的数组长度

Array.shift()
复制代码

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

拼接/截取

Array.concat(arr1,arr2...)
复制代码

合并两个或多个数组,生成一个新的数组。原数组不变。

Array.join(",")
复制代码

将数组的每一项用指定字符连接形成一个字符串

Array.slice(start , end)
复制代码

返回一个新的数组,包含从 start 到 end (不包括该元素)的 arr 中的元素

参数描述
start可选。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。
end可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。
arr.splice(index , howmany , item1,.....,itemX)
复制代码

向/从数组中添加/删除项目,然后返回被删除的项目数组

index:必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。

howmany:必需。要删除的项目数量。如果设置为 0,则不会删除项目。

item1, ..., itemX:可选。向数组添加的新项目。

排序

Array.reverse()
复制代码

将数组倒序。原数组改变。

Array.sort();

//①从小到大
arr.sort((a,b)=>{
    return a-b
})
//②从大到小
arr.sort((a,b)=>{
    return b-a
})
复制代码

对数组元素进行排序

查询

indexOf(element,start)
复制代码

返回给定元素在数组中第一次出现的位置,如果没有出现则返回-1。可以接受第二个参数,表示搜索的开始位置

lastIndexOf(element)
复制代码
返回给定元素在数组中最后一次出现的位置,如果没有出现则返回-1。
复制代码
find();

let Arr = [1,2,5,7,5,9];
let result1 = Arr.find(function(currentValue,index,arr){			
    return currentValue>5;
});
console.log(result1); // 7
复制代码

方法返回通过测试(函数内判断)的数组的第一个元素的值。

findIndex();
复制代码

findIndex和find差不多,不过默认返回的是索引,如果没有符合条件的元素返回 -1

array.fill(value,  start,  end);
复制代码

fill()方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。

arr.includes(searchElement, fromIndex);

[1, 2, 3].includes(2);
复制代码
参数描述
searchElement必须。需要查找的元素值。
fromIndex可选。从该索引处开始查找 searchElement。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜索。默认为 0。

迭代方法

//5个迭代方法:
forEach()、map()、filter()、some()、every()
//这几个方法语法都一样,都不会改变原数组。
currentValue : 必需。当前元素
index: 可选。当前元素的索引值。
arr :  可选。当前元素所属的数组对象。

//forEach():对数组进行遍历循环,这个方法没有返回值。
Arr.forEach(function(currentValue, index, arr){
    console.log(index+"--"+currentValue+"--"+(arr === Arr));		
})

//map():指“映射”,方法返回一个新数组
var arr2 = arr.map(function(currentValue){
    return currentValue*currentValue;
});

//filter(): “过滤”功能,方法创建一个新数组
var result1 = arr.filter(function(currentValue){
    return currentValue>5;
});

//every():判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回true。
var arr = [1,4,6,8,10];
var result1 = arr.every(function(currentValue){
 return currentValue< 12;
});
console.log(result1);  // true

//some():判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true。
var arr = [1,4,6,8,10];
var result1 = arr.some(function(currentValue){
     return currentValue> 10;
});
console.log(result1);  // false
复制代码

归并方法

reduce()、reduceRight()
复制代码

方法从数组的第一项开始,逐个遍历到最后。而 reduceRight()则从数组的最后一项开始,向前遍历到第一项。

reduce()语法:

arr.reduce(function(total , cur , index , arr){//do something}, initialValue)
复制代码

reduceRight()语法:

arr.reduceRight(function(total , cur , index , arr){//do something}, initialValue)
复制代码

total :必需。初始值, 或者计算结束后的返回值。 cur :必需。当前元素。 index :可选。当前元素的索引。 arr:可选。当前元素所属的数组对象。 initialValue:可选。传递给函数的初始值。

var result2 = arr.reduce(function(total,cur,index,arr){	
    console.log("total:"+total+",cur:"+cur+",index:"+index);
 return total+cur;
},10);
console.log("结果:"+result2);
// 输出
// total:10,cur:1,index:0
// total:11,cur:2,index:1
// total:13,cur:3,index:2
// total:16,cur:4,index:3
// total:20,cur:5,index:4
// 结果:25
复制代码
文章分类
前端
文章标签