JS数组中级+高级技巧
本文介绍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的元素
JS数组中级+高级技巧的更多相关文章
- 小兔JS教程(四)-- 彻底攻略JS数组
在开始本章之前,先给出上一节的答案,参考答案地址: http://www.xiaotublog.com/demo.html?path=homework/03/index2 1.JS数组的三大特性 在J ...
- js数组学习整理
原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...
- 转→js数组遍历 千万不要使用for...in...
看到一篇内容还不错,但是排版实在糟糕, 逼死强迫症患者啊,直接拉下去找原文连接,找到了,但是已经消失了···500错误... 第一次因为实在看不下去一篇博客的排版, 为了排版而转载... 转载地址:h ...
- js数组操作大全
原文(http://www.cnblogs.com/webhotel/archive/2010/12/21/1912732.html) 用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简 ...
- js数组去重的4种方法
js数组去重,老生长谈,今天对其进行一番归纳,总结出来4种方法 贴入代码前 ,先对浏览器Array对象进行支持indexOf和forEach的polyfill Array.prototype.inde ...
- js 数组处理函数
本文转载自有有<js 数组处理函数> concat 将参数列表连接到原数组后面形成一个新的数组并返回,原有数组不受影响. var arr = ["a","b& ...
- js 数组赋值问题 :值传递还是引用?
转载于知乎var a = [1,2,3]; var b = a; a = [4,5,6]; alert(b); //[1,2,3] 面试时被问到这样一个问题,竟然从来没试过... 当时直接的理解,数组 ...
- JS数组方法汇总 array数组元素的添加和删除
js数组元素的添加和删除一直比较迷惑,今天终于找到详细说明的资料了,先给个我测试的代码^-^ var arr = new Array(); arr[0] = "aaa"; arr[ ...
- js数组操作
用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目,用到数组的地方很多, 自以为js高手的自己居然无从下手,一下狠心,我学! ...
随机推荐
- centos7 安装python3.6 及模块安装演示
目录: 下载python3.6 安装python3.6的依赖 编译安装 更改链接 更改yum脚本的python依赖 修改gnome-weaktool配置文件 修改urlgrabber配置文件 1.下载 ...
- HDFS中的读写数据流
1.文件的读取 在客户端执行读取操作时,客户端和HDFS交互过程以及NameNode和各DataNode之间的数据流是怎样的?下面将围绕图1进行具体讲解. 图 1 客户端从HDFS中读取数据 1)客户 ...
- 用Python实现的数据结构与算法:堆栈
一.概述 堆栈(Stack)是一种后进先出(LIFO)的线性数据结构,对堆栈的插入和删除操作都只能在栈顶(top)进行. 二.ADT 堆栈ADT(抽象数据类型)一般提供以下接口: Stack() 创建 ...
- Sparsity稀疏编码(二)
为了更进一步的清晰理解大脑皮层对信号编码的工作机制(策略),需要把他们转成数学语言,因为数学语言作为一种严谨的语言,可以利用它推导出期望和要寻找的程式.本节就使用概率推理(bayes v ...
- JAVA构建高并发商城秒杀系统——架构分析
面试场景 我们打算组织一个并发一万人的秒杀活动,1元秒杀100个二手元牙刷,你给我说说解决方案. 秒杀/抢购业务场景 商品秒杀.商品抢购.群红包.抢优惠劵.抽奖....... 秒杀/抢购业务特点 秒杀 ...
- sqlserver create table
①sql 语句创建(项目使用) use sps_db go if exists(select name from sys.tables where name='event_profile_level2 ...
- MyEclipse优化,解决MyEclipse运行慢、卡顿问题
工具: myeclipse2015 2.0 最近想用myeclipse做一下测试,发现myeclipse运行非常卡,直接影响代码的开发,而且还出现软件卡退的情况,让我十分恼火. 一.加大JVM的非 ...
- oracle extract 函数简介
oracle中extract()函数从oracle 9i中引入,用于从一个date或者interval类型中截取到特定的部分 //语法如下: EXTRACT ( { YEA ...
- WebApi_返回Post格式数据
[HttpPost] public HttpResponseMessage Post([FromBody] DingTalkCallBack bodyMsg, string signature, st ...
- 浅谈HashMap 的底层原理
本文整理自漫画:什么是HashMap? -小灰的文章 .已获得作者授权. HashMap 是一个用于存储Key-Value 键值对的集合,每一个键值对也叫做Entry.这些个Entry 分散存储在一个 ...