久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

在 Javascript 中,如何檢查數組是否有重復值?

In Javascript, how do I check if an array has duplicate values?(在 Javascript 中,如何檢查數組是否有重復值?)
本文介紹了在 Javascript 中,如何檢查數組是否有重復值?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

可能重復:
在 javascript 數組中查找重復值的最簡單方法

如何檢查數組是否有重復值?

How do I check if an array has duplicate values?

如果數組中的某些元素相同,則返回true.否則,返回 false.

If some elements in the array are the same, then return true. Otherwise, return false.

['hello','goodbye','hey'] //return false because no duplicates exist
['hello','goodbye','hello'] // return true because duplicates exist

請注意,我不關心查找重復項,只需要布爾結果數組是否包含重復項.

Notice I don't care about finding the duplication, only want Boolean result whether arrays contains duplications.

推薦答案

如果你有一個 ES2015 環境(在寫這篇文章時:io.js, IE11, Chrome, Firefox, WebKit nightly),那么下面的將起作用,并且會很快(即 O(n)):

If you have an ES2015 environment (as of this writing: io.js, IE11, Chrome, Firefox, WebKit nightly), then the following will work, and will be fast (viz. O(n)):

function hasDuplicates(array) {
    return (new Set(array)).size !== array.length;
}

<小時>

如果您只需要數組中的字符串值,則可以使用以下方法:


If you only need string values in the array, the following will work:

function hasDuplicates(array) {
    var valuesSoFar = Object.create(null);
    for (var i = 0; i < array.length; ++i) {
        var value = array[i];
        if (value in valuesSoFar) {
            return true;
        }
        valuesSoFar[value] = true;
    }
    return false;
}

我們使用哈希表"valuesSoFar,其鍵是我們目前在數組中看到的值.我們使用 in 進行查找以查看是否已經發現了該值;如果是這樣,我們跳出循環并返回 true.

We use a "hash table" valuesSoFar whose keys are the values we've seen in the array so far. We do a lookup using in to see if that value has been spotted already; if so, we bail out of the loop and return true.

如果您需要的函數不僅僅適用于字符串值,則以下方法可以使用,但性能不佳;它是 O(n2) 而不是 O(n).

If you need a function that works for more than just string values, the following will work, but isn't as performant; it's O(n2) instead of O(n).

function hasDuplicates(array) {
    var valuesSoFar = [];
    for (var i = 0; i < array.length; ++i) {
        var value = array[i];
        if (valuesSoFar.indexOf(value) !== -1) {
            return true;
        }
        valuesSoFar.push(value);
    }
    return false;
}

不同之處在于我們對 valuesSoFar 使用數組而不是哈希表,因為 JavaScript 哈希表"(即對象)只有字符串鍵.這意味著我們失去了 in 的 O(1) 查找時間,而獲得了 indexOf 的 O(n) 查找時間.

The difference is simply that we use an array instead of a hash table for valuesSoFar, since JavaScript "hash tables" (i.e. objects) only have string keys. This means we lose the O(1) lookup time of in, instead getting an O(n) lookup time of indexOf.

這篇關于在 Javascript 中,如何檢查數組是否有重復值?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

discord.js v12: How do I await for messages in a DM channel?(discord.js v12:我如何等待 DM 頻道中的消息?)
how to make my bot mention the person who gave that bot command(如何讓我的機器人提及發出該機器人命令的人)
How to fix Must use import to load ES Module discord.js(如何修復必須使用導入來加載 ES 模塊 discord.js)
How to list all members from a specific server?(如何列出來自特定服務器的所有成員?)
Discord bot: Fix ‘FFMPEG not found’(Discord bot:修復“找不到 FFMPEG)
Welcome message when joining discord Server using discord.js(使用 discord.js 加入 discord 服務器時的歡迎消息)
主站蜘蛛池模板: 黄色小视频入口 | 国产欧美日韩在线一区 | 欧美成人一区二区三区 | 国产精品久久久久无码av | 成人天堂噜噜噜 | 国产在线拍偷自揄拍视频 | 欧美精品一区在线 | 91免费福利在线 | av一二三四 | 国产精品久久久久aaaa九色 | 国产日韩欧美激情 | 国产欧美精品一区二区 | 国产自产21区 | 亚洲精品一区二区二区 | 欧美一区视频 | 在线黄色影院 | 欧美视频三级 | 久草新视频 | 国产午夜精品福利 | 国产精品毛片一区二区在线看 | 一本色道精品久久一区二区三区 | 欧美国产日韩在线观看 | 二区三区视频 | 国产精品一区久久久 | 成人国产精品免费观看视频 | 国产欧美一区二区三区久久人妖 | 亚洲久久在线 | 伦理片97| 欧美亚洲免费 | 综合五月婷 | 国产精品激情小视频 | 一区二区三区日韩精品 | 久久国产成人 | 精品免费国产一区二区三区四区 | 一级免费a| 免费精品 | 国产麻豆一区二区三区 | 亚洲av毛片| 日韩亚洲一区二区 | 国产91丝袜在线播放 | 欧美一区二区三区 |