首頁  >  問答  >  主體

JavaScript陣列去重:取得所有唯一值

<pre class="brush:php;toolbar:false;"><p>我有一個數字數組,我需要確保其中的數字是唯一的。我在互聯網上找到了下面的程式碼片段,它可以很好地工作,直到數組中有一個零。我在Stack Overflow上找到了另一個幾乎完全相同的腳本,但它不會失敗。 </p> <p>為了幫助我學習,有人能幫我確定原型腳本出了什麼問題嗎? </p> <pre><code>Array.prototype.getUnique = function() { var o = {}, a = [], i, e; for (i = 0; e = this[i]; i ) {o[e] = 1}; for (e in o) {a.push (e)}; return a; }</code></pre> <code> <h3>來自重複問題的更多答案:</h3> <ul> <li>從JS陣列中刪除重複值</li> </ul> <h3>類似的問題:</h3> <ul> <li>取得陣列中所有非唯一值(即:重複/多次出現)</li> </ul><p><br /></p></code></pre>
P粉779565855P粉779565855427 天前463

全部回覆(2)我來回復

  • P粉153503989

    P粉1535039892023-08-21 10:32:19

    ES6/ES2015的更新答案:使用Set擴充運算子(感謝le-m),單行解決方案如下:

    let uniqueItems = [...new Set(items)]

    傳回結果為:

    [4, 5, 6, 3, 2, 23, 1]

    回覆
    0
  • P粉156983446

    P粉1569834462023-08-21 09:27:33

    使用JavaScript 1.6 / ECMAScript 5,您可以使用陣列的原生filter 方法來取得一個具有唯一值的陣列:

    function onlyUnique(value, index, array) {
      return array.indexOf(value) === index;
    }
    
    // 使用示例:
    var a = ['a', 1, 'a', 2, '1'];
    var unique = a.filter(onlyUnique);
    
    console.log(unique); // ['a', 1, 2, '1']

    回覆
    0
  • 取消回覆