Pertanyaan cepat. Saya perlu membuat array menggunakan indeks duplikat. Misalnya, saya memiliki array seperti:

var array = [2, 3, 2, 4, 3, 2, 6, 7];

Dan saya perlu mendapatkan interaksi loop baru untuk setiap indeks duplikat, responsnya harus seperti:

[ 
  [2, 3, 4, 6, 7],
  [2, 3],
  [2],
]

Tolong beri tahu saya jika memungkinkan dan bagaimana membuat beberapa fungsi untuk melakukannya.

Terima kasih!

1
Willian Keller 21 Agustus 2017, 21:58

2 jawaban

Jawaban Terbaik

Anda bisa menggunakan satu objek untuk menyimpan jumlah kemunculan untuk setiap elemen dan menggunakan nilai itu untuk membuat larik hasil.

var array = [2, 3, 2, 4, 3, 2, 6, 7];
var obj = {}, result = []
array.forEach(function(e) {
  obj[e] == undefined ? obj[e] = 0 : obj[e] += 1;
  result[obj[e]] = (result[obj[e]] || []).concat(e)
})

console.log(JSON.stringify(result))
2
Nenad Vracar 21 Agustus 2017, 19:49

Anda dapat melakukan sesuatu seperti ini

var array = [2, 3, 2, 4, 3, 2, 6, 7];
array.sort();
let idx = 0, result = [];
for(let i=0; i<array.length; i++){
    if(i>0 && array[i] != array[i-1]){
        idx = 0;
    }
    if(idx == result.length)
        result[idx] = [];
    result[idx].push(array[i]);
    idx++;
}

console.log(result);
2
marvel308 21 Agustus 2017, 19:33