文档章节

Js中实现数组的排序、乱序、搜索 、去重和删除

微尘鉴
 微尘鉴
发布于 2015/12/15 09:25
字数 519
阅读 165
收藏 6

所有这些功能,用一个sort()就可以完成了。

1. 排序:
默认的sort()按字符编码排序的:

<script type="text/javascript">
<!–
 var testArray=[3,324,5345,6546,134,5654,665];
 testArray.sort();
 alert(testArray);
//–>
</script>

现在要让它按照数值大小排序:

<script type="text/javascript">
<!–
 var testArray=[3,324,5345,6546,134,5654,665];
 testArray.sort(function(a,b){return a-b;});
 alert(testArray);
//–>
</script>

只要传递一个比较函数给sort就可以了,如果比较函数的值小于0,则表示a必须出现在b前面,否则在b后面。

2. 乱序:
让比较函数随机传回-11就可以了:

<script type="text/javascript">
<!–
 var testArray=[1,2,3,4,5,6,7,8,9,10,22,33,55,77,88,99];
 testArray.sort(function(){return Math.random()>0.5?-1:1;});
 alert(testArray);
//–>
</script>

3. 搜索:
sort()来玩搜索还蛮新鲜的,呵呵,看看是怎么玩的吧。
我现在要把数组里含有字母'a'的元素全部找出来,如果没有sort(),似乎只能用遍历了,遍历的效率那个叫恐怖啊!!具体做法如下:

<script type="text/javascript">
<!–
 var testArray=['df', 'rtr', 'wy', 'dafd', 'dfs', 'wefa', 'tyr', 'rty', 'rty', 'ryt', 'afds', 'wer', 'te'];
 testArray.sort(function(a,b){return a.indexOf('a')==-1?1:-1;});
 alert(testArray);
//–>
</script>

这样就把数组中含有字母'a'的元素全部放到数组前面啦,再经过一些简单的处理,就可以输出搜索结果了。

以上是我总结的三种在javascript中用sort()操作数组的方法,如果你有兴趣,你会发现sort()还有好多妙用呢……

 

追加补充:

//数组移除指定元素

Array.prototype.remove = function(val) {
    var index = -1;
    for(var i = 0; i < this.length; i++) {
      if (this[i] == val) index = i;
    }
    if (index > -1) {
    this.splice(index, 1);
    }
};

//数组高效去重

function getArray(a) {
    var hash = {}, len = a.length, result = [];
    for ( var i = 0; i < len; i++) {
        if (!hash[a[i]]) {
            hash[a[i]] = true;
            result.push(a[i]);
        }
    }
    return result;
}

//判断数组中某值是否存在

可以用数组的indexOf函数,方法arr.indexOf(find,start);

find:要找的内容,必须;

start:查找开始下标,可选;

返回:查找数据所在的下标,如果没找到,返回-1

实例如下:

var s=[1,2,3,5,6,9];
var u=s.indexOf(5);//返回5所在的下标3
var d=s.indexOf(8);//返回-1

本文转载自:

微尘鉴
粉丝 8
博文 80
码字总数 30075
作品 0
海淀
高级程序员
私信 提问
JavaScript专题之乱序

JavaScript 专题系列第十九篇,讲解数组乱序,重点探究 Math.random() 为什么不能真正的乱序? 乱序 乱序的意思就是将数组打乱。 嗯,没有了,直接看代码吧。 Math.random 一个经常会遇见的写...

冴羽
2017/10/12
0
0
JavaScript 中的二叉树以及二叉搜索树的实现及应用

接下来让我们一起来探讨js数据结构中的树。这里的树类比现实生活中的树,有树干,树枝,在程序中树是一种数据结构,对于存储需要快速查找的数据非有用,它是一种分层数据的抽象模型。一个树结...

徐小夕
08/04
0
0
打造属于自己的underscore系列(六)- 洗牌算法

javascript如何将一个无序的数组变成一个有序的数组,我们有很多的排序算法可以实现,例如冒泡算法,快速排序,插入排序等。然而我们是否想过,如何将一个有序的数组乱序输出呢?本文将从经典...

不做祖国的韭菜
02/17
0
0
中高级前端必须了解的--数组乱序

引言 数组乱序指的是:将数组元素的排列顺序随机打乱。 将一个数组进行乱序处理,是一个非常简单但是非常常用的需求。 比如,“猜你喜欢”、“点击换一批”、“中奖方案”等等,都可能应用到...

jspool
06/12
0
0
JavaScript专题之递归

JavaScript 专题系列第十八篇,讲解递归和尾递归 定义 程序调用自身的编程技巧称为递归(recursion)。 阶乘 以阶乘为例: 示意图(图片来自 wwww.penjee.com): 斐波那契数列 在《JavaScript专...

冴羽
2017/09/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

IT兄弟连 HTML5教程 HTML5表单 新增的表单属性1

HTML5 Input表单为<form>和<input>标签添加了几个新属性,属性如表1。 1 autocomplete属性 autocomplete属性规定form或input域应该拥有自动完成功能,当用户在自动完成域中开始输入时,浏览器...

老码农的一亩三分地
49分钟前
5
0
OSChina 周五乱弹 —— 葛优理论+1

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @这次装个文艺青年吧 :#今日歌曲推荐# 分享米津玄師的单曲《LOSER》: mv中的舞蹈诡异却又美丽,如此随性怕是难再跳出第二次…… 《LOSER》-...

小小编辑
今天
1K
17
nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
15
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部