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

所有这些功能,用一个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

转载于:https://my.oschina.net/yunsy/blog/544374

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值