JS 整理javascript中一些常见的数组方法

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值