创建
- Array构造函数
let colors = new Array();
let colors = new Array(20);
let colors = new Array('red','blue');
构造函数创建数组时也可以省略new关键字
- 字面量
let colors =['red','blue'];
let colors = [];
与对象一样,在使用字面量创建数组时,不会调用 Array构造函数
检测数组
-
instanceof
:colors instanceof Array;
-
Array.isArray()
:Array.isArray(colors);
对于一个网页 或者一个全局作用域而言,使用insanceof
就可以得到想要的结果,一旦存在两个以上不同的全局环境,它不能得到我们想要的结果,因而就出现了Array.isArray()
转换方法
-
valueof()
:返回数组自身 -
toString()
:返回由数组中每个值的字符串形式拼接而成的以逗号分隔的字符串 -
toLocaleString()
:通常也返回数组字符串形式组成的以逗号分隔的字符串 -
join()
:可以选择使用不同的分隔符来分隔字符串
let colors = ['red','blue'];
let ts = colors.toString();
let tls = colors.toLocaleString();
let v = colors.valueOf();
let j = colors.join(';');
console.log(ts);
console.log(tls);
console.log(v);
console.log(j);
//结果
"red,blue"
"red,blue"
["red", "blue"]
"red;blue"
栈&队列方法
-
pop()
:从数组末尾移除一项并返回这一项 -
push()
:从数组末尾添加一项并返回新数组的长度 -
shift()
:移除数组中的第一项并返回这一项 -
unshift()
:在数组前端添加项并返回新的数组长度
重排序方法
-
reverse()
:反转数组项的顺序 -
sort()
:按照升序排列数组项
let num1= [1,5,3,7,0];
let num2 = [12,21,5,4,0];
console.log(num1.sort());
console.log(num1.reverse());
console.log(num2.sort());
console.log(num2.reverse());
//结果
[0, 1, 3, 5, 7]
[7, 5, 3, 1, 0]
[0, 12, 21, 4, 5]
[5, 4, 21, 12, 0]
在某些情况下这两个方法能满足我们的需求,但有些情况却不可以,因为这两个方法在排序时将数组项都转换成字符串再进行排序,所以对于有些数值不能正确排序
为了解决这个问题,可以sort()方法接收一个比较函数作为参数,以便我们指定哪个值应该排在前边
//比较函数
function compare(value1,value2){
if(value1 < value2){
return -1;
}
else if(value1>value2){
return 1;
}
else{
return 0;
}
}
//当数组项都是数值时,可将比较函数简化为compare1
function compare1(value1,value2){
return value1-value2;
}
let num = [1,23,0,5,7];
let colors = ['red','blue','pink'];
console.log(num.sort(compare));
console.log(colors.sort(compare));
//结果
[0, 1, 5, 7, 23]
["blue", "pink", "red"]
实现逆序只需要在比较函数中调换两个参数即可
操作方法
-
concat()
:基于当前数组项创建一个新数组,并且将参数中项追加到新数组之后 -
splice()
:-
splice(start,count)
:删除从start位置起始的count项 -
splice(start,count,value)
:删除从start位置起始的count项并且插入后边的参数
-
位置方法
-
indexOf()
:返回指定项在数组中的位置,从前往后找,可指定起始位置 -
lastIndexOf()
:返回指定项在数组中的位置,从后往前找,可指定起始位置
迭代方法
-
every()
:对数组中的每一项运行指定函数,若每一项该函数都返回true,则最终返回true -
filter()
:对数组中的每一项运行指定函数,返回该函数返回true的项组成的数组 -
forEach()
:对数组中的每一项运行指定函数,无返回值 -
map()
:对数组中的每一项运行指定函数,返回每次函数调用的结果组成的数组 -
some()
:对数组中的每一项运行指定函数,只要有返回true的项则最终返回true,否则返回false
let nums = [1,3,4,6,5];
let evenum = nums.every(function(item,index,array){
return (item>0);
});
let filnum = nums.filter(function(item,index,array){
return (item > 3);
});
let mapnum = nums.map(function(item,index,array){
return item+1;
});
let somenum = nums.some(function(item,index,array){
return item >5;
});
nums.forEach(function(item,index,array){
item = item+1;
});
console.log(evenum);
console.log(filnum);
console.log(mapnum);
console.log(somenum);
//结果
true
[4, 6, 5]
[2, 4, 5, 7, 6]
true
归并方法
-
reduce()
:从前到后迭代数组中的每一项,构建一个最终的返回值 -
reduceRight()
:从后往前迭代数组中的每一项,构建一个最终的返回值
let nums = [1,3,4,6,5];
let sum = nums.reduce(function(pre,cur,index,array){
return pre+cur;
});
let sumright = nums.reduce(function(pre,cur,index,array){
return pre+cur;
});
console.log(sum); //19
console.log(sumright);//19
网友评论