js判断数组中是否有重复值得三种方法

 

转载:https://blog.youkuaiyun.com/wszcy199503/article/details/76638578

方法一: 

function isRepeat() {
    var ary = new Array("111", "22", "33", "111");
    var s = ary.join(",") + ",";
    for (var i = 0; i < ary.length; i++) {
        if (s.replace(ary[i] + ",", "").indexOf(ary[i] + ",") > -1) {
            alert("数组中有重复元素:" + ary[i]);
            break;
        }
    }
}

方法二: 

function isRepeat() {
    var ary = new Array("111", "22", "33", "111");
    var nary = ary.sort();
    for (var i = 0; i < ary.length; i++) {
        if (nary[i] == nary[i + 1]) {
            alert("数组重复内容:" + nary[i]);
        }
    }
}

方法三: 

function isRepeat(arr) {
    var hash = {};
    for (var i in arr) {
        if (hash[arr[i]]){
            return true; 
        }
        hash[arr[i]] = true;
    }
    return false;
}

 

### 查找 JavaScript 数组中元素的索引 在 JavaScript 中,存在多种方式来查找数组中特定元素的索引。对于简单的元素匹配,`indexOf()` 是一种常用的方法[^1]。 ```javascript const array = ['apple', 'banana', 'cherry']; const indexSimpleElement = array.indexOf('banana'); console.log(indexSimpleElement); // 输出: 1 ``` 当需求涉及到更复杂的条件判断时,`findIndex()` 提供了一个更为灵活的选择。此方法接收一个回调函数作为参数,该函数会对数组中的每一项执行直到找到符合条件的第一项,并返回该项的索引;如果没有找到任何项目,则返回 `-1`[^2]。 ```javascript let products = [ {name: 'Apple', price: 0.7}, {name: 'Banana', price: 0.5} ]; let indexComplexCondition = products.findIndex(product => product.name === 'Banana'); console.log(indexComplexCondition); // 输出: 1 ``` 另外,在某些情况下可能需要完全定制化的逻辑来进行搜索,这时可以采用 `for` 循环实现自定义的遍历过程。 ```javascript function customFind(array, target){ for(let i=0; i<array.length; i++){ if (someCustomLogic(array[i], target)){ return i; } } return -1; } // 假设 someCustomLogic 函数已经定义好用来比较两个值是否相等或者满足其他条件 ``` 值得注意的是,上述提到的技术主要针对线性结构的数据集有效。如果是已排序且无重复键值的情况,理论上也可以考虑二分查找算法提高效率,但在标准 JavaScript API 中并没有直接提供这样的功能,而且对于含有重复元素的情形,传统的二分查找并不能保证总是能找到最左边或最右边的目标位置[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值