1、将数组转为字符串:
array.prototype.join
var arr = [1,2,3];
arr.
join(); //"1,2,3"
arr.
join("_"); //"1_2_3"
重复的字符串:
function repeatString(str,n){
return new Array(n+1).join(str);
}
repeatString("a",3); //"aaa"
repeatString("Hi",5); //"HiHiHiHIHi"
2、将数组逆序:
array.prototype.reverse
var arr = [1,2,3];
arr.
reverse(); //[3,2,1]
arr; //[3,2,1] 原数组被修改
3、数组排序:
array.prototype.sort
var arr = ["a","e","c","b","d"];
arr.
sort(); // ["a","b","c","d","e"] 数组属性变化
var arr = [13,24,51,3];
arr.
sort(); //[13,24,3,51]
arr; //[13,24,3,51] 原数组被修改,但是只是把数组转化成字符进行排序,并不是数字排序
如果按照数字进行排序,如下:
arr.
sort(function(a,b){
return a-b;
}); //[3,13,24,51] 排序正确,从小到大,若return b-a ,从大到小排序;
对象排序;
arr = [{age:15},{age:39},{age:99}];
arr.
sort(function(a,b){
return a.age-b.age;
});
arr.
forEach(function(item){
console.log('age',item.age);
});
//输出结果:age 25/age 39/ age 99
4、数组合并:
array.prototype.concat
var arr = [1,2,3];
arr.
concat(4,5); //返回[1,2,3,4,5]
arr; //[1,2,3] 原始数组未被修改
arr.
concat([10,11],13); //[1,2,3,10,11,13],数组10,11会被拉平,追加到原始数组上。
arr.
concat([1,[2,3]]); //[1,2,3,1,[2,3]] ,如果传进去的是一个数组,那么该数组不会被拉平两次。
5、返回部分数组:
array.prototype.slice
slice(a,b)方法:
如果a,b为正数时,参数a表示从前往后的第a个元素选中,参数b表示从前往后的第b个元素,不被选中;
如果a,b为负数时,参数a,b应该从后往前数。
var arr = [1,2,3,4,5];
arr.
slice(1,3); //[2,3]
arr.
slice(1); //[2,3,4,5],如果b参数没有的情况,则选中从a个元素到最后
arr.
slice(1,-1); //[2,3,4]
arr.
slice(-4,-3); //[2]
arr; //[1,2,3,4,5] ,原始数组未被修改。
6、数组拼接:
array.prototype.splice
var arr = [1,2,3,4,5];
可以删除从数组某个位置开始至后面几个元素操作
arr.
splice(2,2); //return [3,4],删除从第二个元素后面的2个元素
可以删除指定位置后面的元素
arr.
splice(2); //return [3,4,5], 删除从第二个元素后面所有元素
可以删除元素后拼接新的元素
arr.
splice(1,1,"a","b"); //return [2],删除从第一个元素后面的1个元素,并拼接新的元素。
arr; //[1,"a","b",3,4,5]
7、数组变量:array.prototype.forEach
var arr = [1,2,3,4,5];
arr.forEach(function(x,index,a){
console.log(x+"|"+index+"|"+(a===arr));
});
//1|0|true
//2|1|true
//3|2|true
//4|3|true
//5|4|true
Tips: forEach方法只支持IE9以上的浏览器,ECS5。
8、数组映射:
array.prototype.map
var arr = [1,2,3];
arr.
map(function(x){
return x + 10;
}); // [11,12,13]
arr; //[1,2,3] 原始数组未修改。
9、数组过滤:
array.prototype.filter
var arr = [1,2,3,4,5,6,7,8,9,10];
arr.
filter(function(x,index){
return index % 3 === 0 || x>= 8;
}); //returns [1,4,7,8,9,10]
arr; //[1,2,3,4,5,6,7,8,9,10] 原始数组未被修改
10、数组判断:
array.prototype.every && array.prototype.some
every 和 some 的区别是:
every表示数组里面全部的元素满足条件时候才能返回true,否则返回false;
some表示数组里个别元素满足条件时,就返回true,全部不满足时,才返回false;
var arr =[1,2,3,4,5];
arr.
every(function(x){
return x < 10;
}); //true
arr.
every(function(x){
return x < 3;
}); //false
arr.
some(function(x){
return x === 3;
}); //true
arr.
some(function(x){
return x === 100;
}); //false
11、数组内元素两两聚合:
array.prototype.reduce && array.prototype.reduceRight
reduce
和 reduceRight的区别:
reduce是从左边开始每两个元素进行操作;
reduceRight是从右边开始每两个元素进行操作;
var arr = [1,2,3];
var sum = arr.
reduce(function(x,y){
return x + y ;
},0); //6
arr ; //[1,2,3] 原始数组未被修改
arr = [3,9,6];
var max = arr.
reduce(function(x,y){
console.log(x + "|" + y);
return x > y ? x : y ;
});
// 3|9
// 9|6
max; //9
var max = arr.
reduceRight(function(x,y){
console.log(x + "|" + y);
return x > y ? x : y ;
});
// 6|9
// 9|3
max; //9
12、数组检索:
array.prototype.indexOf && array.prototype.lastIndexOf
indexOf:是从左到右检索
lastIndexOf:是从右到左检索
13、判断是否为数组:
array.isArray
Array.
isArray([]); //true
其他判断数组的方法:
[] instanceof Array; //true
({}).toString.apply([]) === '[object Array]'; //true
[].constructor === Array ; //true