创建方法
- 对象字面量语
var arr = [ ];
- 构造函数创建
new Array( )
数组的转换方法
- toString( ):数组继承而来的方法,返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串
- valueOf( ):数组继承而来的方法,调用数组中每一项的toString( )方法,返回一个数组
- toLocaleString( ):数组继承而来的方法,经常返回与toString( )和valueOf( )方法相同的值。当调用数组的toLocaleString( ) 方法时,它也会创建一个数组值以逗号分隔的字符串。与前两个方法不同的是取得每一项的值,调用的是它的toLocaleString( ) 方法而不是toString( ) 方法
- join( ):可以使用不同的分隔符来构建字符串,不传值时,默认以逗号分隔
let arr = ["a","b","c"];
// 控制台输出:"a,b,c"
let arr_0 = arr.join();
console.log(arr_0);
// 控制台输出:"a-b-c"
let arr_1 = arr.join("-");
console.log(arr_1);
数组的插入和删除方法(更改原数组)
- push( ):从数组末尾插入
- pop( ):从数组末尾删除
- shift( ):从数组首位删除
- unshift( ):从数组首位插入
let arr = ["a","b","c"];
// 控制台输出为:["a","b","c","d"];
arr.push("d");
console.log(arr);
// 控制台输出为:["a","b","c"]
arr.pop();
// 控制台输出为:["d","a","b","c"]
arr.shift("d");
console.log(arr);
// 控制台输出为:["a","b","c"]
arr.unshift();
console.log(arr)
数组的重排方法(更改原数组)
- reverse( ):反转数组项的顺序
- sort( ):默认情况下以升序排列,sort( )方法会调用数组每项的toString( )方法再进行比较,所以比较的是字符编码;此函数可以接收一个比较函数,通过此比较函数的返回值(-1,0,1)决定升序还是降序
let arr [1,2,3];
// 控制台输出为:[3,2,1]
arr.reverse();
console.log(arr);
// 控制台输出为:[1,2,3]
arr.sort();
console.log(arr);
// 控制台输出为:[3,2,1]
arr.sort(function(a,b){
return b-a;
});
console.log(arr);
// 控制台输出为:[1,2,3]
arr.sort(function(a,b){
return a-b;
});
console.log(arr);
数组的操作方法
- concat( ):基于当前数组的所有项创建一个新数组,将接受到的参数依次添加到此数组中;(不更改原数组)
- slice( ):基于当前数组中的一或多个项创建一个数组。此方法可以接收一或两个参数,即要返回的起始和结束为止,只有一个参数时,返回指定位置开始至数组末尾的项;(不更改原数组)
- splice( ):有三种使用方式,3个参数或以上,第一个参数代表从哪个位置插入,第二个参数代表需要删除几项,第三个及其之后的参数代表需要插入的项,此方法都会返回一个数组,包含原来删除的项;(更改原来的数组)
let arr = [1,2,3];
// 控制台的输出为:[1,2,3],[1,2,3,4,5,6]
let arr_0 = arr.concat(4,5,6);
console.log(arr);
console.log(arr_0);
// 控制台输出为:[1,2,3],[2]
let arr_1 = arr.slice(1,2);
console.log(arr);
console.log(arr_1);
// 控制台输出为:[1,4,3],[2]
let arr_2 = arr.splice(1,1,4);
console.log(arr);
console.log(arr_2);
数组的位置方法
- indexOf( ):接受两个参数,第一个为需要查找的项,第二个为从哪个位置查找,返回的是查找的位置,如果没有此项返回-1,匹配查找时,是使用全等的方式
- lastIndexOf( ):与上面的方法相同,但是从末尾开始查找
lat arr = [1,2,3,2,3];
// 控制台输出为:1,3
let idx = arr.indexOf(2);
let idx_1 = arr.indexOf(2,2);
// 控制台输出为:3,1
let idx_2 = arr.lastIndexOf(2);
let idx_3 = arr.lastIndexOf(2,2);
数组的迭代方法
对数组中的每一项运行给定函数,每个方法都接受两个参数,第一个是运行的函数,第二个是该函数的作用域对象(可选)
接收的运行函数都接收三个参数(可省略),数组的项的值,该项在数组中的位置,数组本身
- every( ):如果该函数对每一项都返回true,则返回true
- some( ):如果该函数对任一项返回true,则返回true
- filter( ):返回该函数会返回true组成的数组
- forEach( ):此方法没有返回值
- map( ):返回每次函数调用结果组成的数组
let arr = [1,2,3,4];
// 控制台输出:true,false
let result = arr.every(function(item){
return item >= 1;
});
let result_0 = arr.every(function(item){
return item > 1;
});
console.log(result);
console.log(result_0);
// 控制台输出:true,false
let result_1 = arr.some(function(item){
return item > 3;
});
let result_2 = arr.some(function(item){
return item > 5;
});
console.log(result_1);
console.log(result_2);
// 控制台输出:[2,3,4]
let result_3 = arr.filter(function(item){
return item > 1;
});
console.log(result_3);
// 控制台输出:1,2,3,4
arr.forEach(function(item){
console.log(item)
});
// 控制台输出 [2,3,4,5]
let reulst_4 = arr.map(function(item){
return item+1;
});
数组的缩小方法
- reduce( ):从第一项遍历至最后一项,对前一项与当前项进行操作
- reduceRight( ):与上面方法相同,但方向相反
let arr = [1,2,3,4];
// 控制台输出:-8,90
let result = arr.reduce(function(prior,next,idx,Arr){
return prior - next;
});
let result_0 = arr.resuce(function(prior,next,idx,Arr){
return prior - next;
},100);
console.log(result);
console.log(result_0);
// 控制台输出:-2,90
let result_2 = arr.reduceRight(function(prior,next,idx,Arr){
return prior-next;
});
let result_3 = arr.reduceRight(function(prior,next,idx,Arr){
return prior-next;
},100);