久久久久久久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播放 | www.久| 亚洲一区二区免费 | 国产欧美日韩一区 | 中文字幕av亚洲精品一部二部 | 亚洲精品乱码久久久久久蜜桃 | 日韩一区二区在线视频 | 91视频正在播放 | 久久精品一区 | 美女在线观看国产 | 九九导航 | www.嫩草| 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 久草精品视频 | av片在线观看网站 | 久草在线 | 午夜伦理影院 | 国产成人精品久久二区二区91 | 精品视频www | 黄色高清视频 | 亚洲视频免费在线观看 | 97超碰成人| 亚洲免费久久久 | 亚洲国产精品久久久久久 | www.日韩系列| 中文字幕在线观看日韩 | 日韩在线一区二区 | 亚洲一区毛片 | 国产精品久久久久久一级毛片 | 青草久久免费视频 | 中文字幕av亚洲精品一部二部 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 久久视频精品 | 日韩精品一区在线 | 久草视频在线看 | 欧美视频二区 | 欧美国产视频 | 欧日韩在线 | 特黄级国产片 |