js 判断数组是否有重复元素的几种方式

// 方法一,正则判断

var ary = new Array("111","222","33","112","222");

alert(mm(ary))

// 验证重复元素,有重复返回true;否则返回false

function mm(a) {

    return /(\x0f[^\x0f]+)\x0f[\s\S]*\1/.test("\x0f"+ a.join("\x0f\x0f") +"\x0f");

}



// 方法二,通过数组排序,比较临近元素,可指出重复的元素

var ary = new Array("111","22","33","111","22");

var nary = ary.sort();

for(var i = 0; i < nary.length - 1; i++) {

    if (nary[i] == nary[i+1]) {

        alert("重复内容:" + nary[i]);

    }

}



// 方法三,通过字符串查找

var ary = new Array("111","22","33","111","22");

var s = ary.join(",") + ",";

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

    if(s.replace(ary[i] + ",", "").indexOf(ary[i] + ",") > -1) {

        alert("重复内容:" + ary[i]);

    }

}


// 方法四,通过哈希

var ary = new Array("111","22","33","111","22");

alert(isRepeat(ary));

// 验证重复元素,有重复返回true;否则返回false

function isRepeat(arr) {

    var hash = {};

    for(var i in arr) {

        if(hash[arr[i]]) {

            return true;

        }

        // 不存在该元素,则赋值为true,可以赋任意值,相应的修改if判断条件即可

        hash[arr[i]] = true;

    }

    return false;

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript中,向数组添加元素的方法主要有两种:push()和splice()。而判断数组是否已经存在某个元素,一般可以使用indexOf()方法来实现。下面分别对此进行详细说明。 1. push()方法 push()方法可以将一个或多个元素添加到数组的末尾,具体语法如下: ``` array.push(element1, ..., elementN) ``` 其中,element1到elementN是要添加到数组元素。如果要添加的元素已经存在于数组中,则不会进行重复添加。例如: ``` var arr = [1, 2, 3]; arr.push(2, 4, 5); console.log(arr); // [1, 2, 3, 4, 5] ``` 在上面的代码中,2已经存在于数组中,所以不会被重复添加。 2. splice()方法 splice()方法可以在数组的任意位置添加或删除元素,具体语法如下: ``` array.splice(index, howMany, [element1, ..., elementN]) ``` 其中,index是要添加或删除元素的位置,howMany是要删除的元素个数,element1到elementN是要添加到数组元素。如果要添加的元素已经存在于数组中,则不会进行重复添加。例如: ``` var arr = [1, 2, 3]; arr.splice(1, 0, 2, 4, 5); console.log(arr); // [1, 2, 4, 5, 3] ``` 在上面的代码中,2已经存在于数组中,所以不会被重复添加。 3. indexOf()方法 indexOf()方法可以返回某个元素数组中第一次出现的位置,如果不存在则返回-1。因此,我们可以通过判断元素的位置是否为-1来确定该元素是否已经存在于数组中。例如: ``` var arr = [1, 2, 3]; if (arr.indexOf(2) === -1) { arr.push(2); } console.log(arr); // [1, 2, 3] if (arr.indexOf(4) === -1) { arr.push(4); } console.log(arr); // [1, 2, 3, 4] ``` 在上面的代码中,第一个if语句判断2是否已经存在于数组中,由于已经存在,所以不会进行重复添加。第二个if语句判断4是否已经存在于数组中,由于不存在,所以会添加到数组中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值