亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

檢查數組中的多個數字

檢查數組中的多個數字

慕勒3428872 2021-06-07 17:57:30
我需要創建一個函數來檢查數組中的所有數字并將它們打印出來。我的想法與此類似:  var array = [15,22,88,65,79,19,93,15,90,38,77,10,22,90,99];   var string = "";  var len = array.length;聲明變量后,我開始循環它們:  for (var i = 0; i < len; i ++) {     for (var j = 0; j < len; j ++) {        //console.log(array[i], array[j]);     }  }控制臺按以下順序打印我的值:3 33 63 67. .6 36 66 67. .我想創建一個 if 語句,檢查 array[i] 是否等于 array[j] 然后將內容推送到一個新字符串中。
查看完整描述

2 回答

?
九州編程

TA貢獻1785條經驗 獲得超4個贊

您需要在外循環中迭代,直到最后一項之前的元素和內循環中從實際索引加一開始,以防止檢查相同的元素。


如果發現重復,將值推送到duplicates數組。


var array = [15, 22, 88, 65, 79, 19, 93, 15, 90, 38, 77, 10, 22, 90, 99],

    len = array.length,

    i, j,

    duplicates = [];


for (i = 0; i < len - 1; i++) {

  for (j = i + 1; j < len; j++) {

    if (array[i] === array[j]) duplicates.push(array[i]);

  }

}


console.log(duplicates);

使用更短的方法 Set


var array = [15, 22, 88, 65, 79, 19, 93, 15, 90, 38, 77, 10, 22, 90, 99],

    found = new Set,

    duplicates = array.filter(v => found.has(v) || !found.add(v));


console.log(duplicates);


查看完整回答
反對 回復 2021-06-11
?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

您還可以將 Set與Array.filter和Array.indexOf 一起使用:


let data = [15,22,88,65,79,19,93,15,90,38,77,10,22,90,99]


let r = new Set(data.filter((v, i, a) => a.indexOf(v) !== i))


console.log(Array.from(r))

這個想法是將項目過濾到找到多個索引的項目,然后將它們添加到集合中。由于 Set 僅存儲唯一項目,因此它會處理重復項并獲得最終結果。

我們利用 Array.filter 為 iteratee 函數提供 3 個參數 - value (v),當前index (i)和實際的事實array (a)。


查看完整回答
反對 回復 2021-06-11
  • 2 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號