数组(二)——数组方法及数组小结

数组方法

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);//数组的undefined被忽略
}
repeatString('a',3);//'aaa'
repeatString('Hi',5);//'HiHiHiHiHi'
Array.prototype.reverse

将数组逆序

var arr = [1,2,3];
arr.reverse();//[3,2,1]
arr;//[3,2,1],原数组被修改
Array.prototype.sort

排序

var arr = ['a','d','c','b'];
arr.sort();//['a','b','c','d'],字母顺序排序

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:25},{age:99},{age:39}];
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
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]  拉平一次
arr.concat([1,[2,3]]);//[1,2,3,1,[2,3]]    拉平一次
Array.prototype.slice

返回部分数组

var arr = [1,2,3,4,5];
arr.slice(1,3);//[2,3]
arr.slice(1);//[2,3,4,5]
arr.slice(1,-1);//[2,3,4]
arr.slice(-4,-3);//[2]
Array.prototype.splice

数组拼接

var arr = [1,2,3,4,5];
arr.splice(2);//returns [3,4,5]
arr;//[1,2]

var arr = [1,2,3,4,5];
arr.splice(2,2);//returns [3,4]
arr;//[1,2,5]

var arr = [1,2,3,4,5];
arr.splice(1,1,'a','b');//returns [2]
arr;//[1,'a','b',3,4,5]
Array.prototype.map

数组映射

var arr = [1,2,3];
arr.map(function(x){
    return x + 10;
});//[11,12,13]
arr;//[1,2,3]
Array.prototype.filter
var arr = [1,2,3,4,5,6,7,8,9,10];
arr.filterfunction(x){
    return index % 3 === 0 || x >= 8;
});//[1,4,7,8,9,10]
arr;//[1,2,3,4,5,6,7,8,9,10]
Array.prototype.every & some

数组判断

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
Array.prototype.reduce & reduceRight
var arr = [1,2,3];
arr.reduce(function(x, y){
    return x + y;//参数x表示累加器累加回调的返回值,y表示正在数组处理的值
});//6
arr;//[1,2,3]

var arr = [3,6,9];
arr.reduce(function(x, y){
    console.log(x + "|" + y);
    return x > y ? x : y;//返回值再赋值给累加值x,在此的效果则为筛选最大值
});
// 3|9
// 9|6
max;//9

var arr = [3,6,9];
arr.reduceRight(function(x, y){
    console.log(x + "|" + y);
    return x > y ? x : y;//这里的第一个元素为最右边的9
});
// 9|6
// 9|3
max;//9
Array.prototype.indexOf & lastIndexOf

数组检索

var arr = [1,2,3,2,1];
从左往右查找
arr.indexOf(2);//1,返回2的索引位置
arr.indexOf(99);//-1
arr.indexOf(1,1);//4,第二个参数表示查找的开始位置
arr.indexOf(1,-3);//4
arr.indexOf(2,-1);//-1
//从右往左查找
arr.lastIndexOf(2);//3
arr.lastIndexOf(2,-2);//3
arr.lastIndexOf(2,-3);//1
Array.isArray

判断是否为判断

Array.isArray([]);true
//其他方式
[] instanceof Array;//true
({}).toString.apply([]) === '[object Array]';//true
[].constructor === Array;//true

数组小结

数组和一般对象
  • 相同
    1. 都可以继承
    2. 数组是对象,对象不一定是数组
    3. 都可以当做对象添加删除属性
  • 不同
    1. 数组自动更新length
    2. 按索引访问数组常常比一般对象属性明显迅速
    3. 数组对象继承Array.prototype上的大量的数组操作方法
字符串和数组
var str = 'hello world';
str.charAt(0);//'h'
str[1];//e

Array.prototype.join.call(str,'_');//'h_e_l_l_o__w_o_r_l_d'

猜你喜欢

转载自www.cnblogs.com/y-dt/p/9381299.html
今日推荐