本文介绍JS数组一些比较进阶的方法:

reverse:数组反转;

join:(参数)以参数为连接符将数组拼接为字符串;

实例:

var arr=[];

arr[3]="haha";

console.log(arr.join("a"));//输出:aaahaha;    arr[3]实际上定义了数组长度为4且前3项都为undifided, 因此join("a")则为:空 +a+空+ a 空+ a+ haha

配合字符串split方法实现字符串反转:

String.prototype.reverse=function () {
      return this.split("").reverse().join("");
}

快速生成累加数组:

for (var i = 1, arr=[]; arr.push(i++)<10;) ;

console.log(arr);//[1,2,3,4,5,6,7,8,9,10]//   将10修改为需要的数字即可

数组排序:

var arr=[1,13,500,70]

最大值:Math.max.apply(null,arr);//500

最小值:Math.min.apply(null,arr);  //1

排序:从大到小:arr.sort((a,b)=>b-a)   或者   arr.sort(function(a,b){return b-a});

   从小到大::arr.sort((a,b)=>a-b)   或者   arr.sort(function(a,b){return a-b});

   随机排序arr.sort(function(){return Math.random()-0.5});

  双重标准排序:

例子1:要求:将arr按num大小排序,如果num相同则以time时间较新的排序

var arr= [
    {name:'qqq', num:2,time:'2015-06-08 13:44:18'},
    {name:'www', num:3,time:'2015-06-08 13:44:18'},
    {name:'eee', num:4,time:'2015-06-07 13:40:18'},
    {name:'rrr', num:4,time:'2015-06-08 13:44:18'},
    {name:'yyy', num:6,time:'2015-06-07 13:40:18'},
];

arr.sort((a,b)=>a.num==b.num?Date.parse(b.time)-Date.parse(a.time):b.num-a.num)

例子2:要求:将arr按每一项中的数字从小到大排序

var arr=["那你dasda1222","哈哈哈das32dasdsa","纳尼8888dasdsadas","aaa333"];

arr.sort((a,b)=>a.match(/\d/) - b.match(/\d/))

或者arr.sort(function(a,b){return a.match(/\d/) - b.match(/\d/)})

数组去重:

1 基本版本:  

Array.prototype.unique = function() {

// 创建一个新的临时数组,用于保存输出结果
var n = [];

for (var i = 0; i < this.length; i++) {
// 如果当前数组的第i个元素已经保存进了临时数组,那么跳过,否则把当前项push到临时数组里面
if (n.indexOf(this[i]) == -1) n.push(this[i]);
}
return n;
}

2 高效版

 Array.prototype.unique = function() {
        / / n为hash表,r为临时数组
      var n = {}, r = [];

for (var i = 0; i < this.length; i++) {

// 如果hash表中没有当前项

if (!n[this[i]]) {

n[this[i]] = true;

// 把当前数组的当前项push到临时数组里面
      r.push(this[i]);
      }
   }
   return r;
}

3 简洁先进版

Array.prototype.unique = function() {
       return this.filter((v, i) => this.indexOf(v) === i)
}

 

其他方法:var arr=[7,10,222]

快速复制数组:var arr2=arr.slice();

console.log(arr2);    //[7,10,222]

console.log(arr2===arr)  //  false

数组求和:

arr.reduce(function (item,idx) {
       return  item+idx
})

数组过滤:var arr=["a",{name:"haha"},"1212","8"]

arr. filter(function(item) {return typeof item == 'number'})  //去除类型不是Number的元素

最新文章

  1. logistic regression与SVM
  2. Google Code Jam 2016 Round 1C C
  3. Linux下的网络环境配置
  4. C++ Static(静态成员)的作用总结
  5. UVA 10061 How many zero&#39;s and how many digits ? (m进制,阶乘位数,阶乘后缀0)
  6. jquery-2.0.3.js和jquery-2.0.3.min.js的区别
  7. MPlayer播放器安装
  8. ajax(ajax开发)
  9. Dubbo底层采用Socket进行通信详解
  10. AppiumLibrary常用关键字
  11. C#设计模式之2:单例模式
  12. 范型方法 &amp; 范型参数 &amp; 范型返回值
  13. PHP使用MySQL实现消息队列
  14. 使用mybatis-spring-boot-starter如何打印sql语句
  15. docker测试时候命令无法补全的解决方法_docker
  16. PHP 数组current和next用法
  17. linux:用户及文件权限管理
  18. PKU Judge Online 安装指南
  19. 在centos7云服务器上搭建Apache服务器并访问到你的网站
  20. python 面向对象基础和高级复习

热门文章

  1. POI - Excel API
  2. maven运行junit用例并生成报告
  3. 21. Merge Two Sorted Lists(合并2个有序链表)
  4. Eclipse中如何查看使用的JDK版本
  5. Least slack time scheduling
  6. java第四天
  7. mongodb的分片(2)
  8. linux第八周
  9. 20145315 《Java程序设计》第四周学习总结
  10. ZLYD团队第5周项目总结