Rumah > hujung hadapan web > tutorial js > Bagaimanakah Saya Boleh Mengeluarkan Nilai Pendua dengan Cekap daripada Tatasusunan JavaScript?

Bagaimanakah Saya Boleh Mengeluarkan Nilai Pendua dengan Cekap daripada Tatasusunan JavaScript?

DDD
Lepaskan: 2025-01-03 12:13:41
asal
639 orang telah melayarinya

How Can I Efficiently Remove Duplicate Values from JavaScript Arrays?

Mengalih keluar Nilai Duplikat daripada Tatasusunan dalam JavaScript

Adakah anda berurusan dengan tatasusunan yang mungkin mengandungi pendua dan perlu mencipta tatasusunan baharu dengan hanya nilai yang unik? Berikut ialah panduan komprehensif dengan pelbagai pendekatan untuk menyelesaikan isu biasa ini.

TL;DR: Menggunakan Set ES6 dan Sintaks Spread

const uniq = [...new Set(array)];
Salin selepas log masuk

"Pintar" tetapi Pendekatan Naif (Kuadratik Masa)

const uniqueArray = a.filter((item, pos) => a.indexOf(item) === pos);
Salin selepas log masuk

Hashtables to the Rescue (Masa Linear)

const uniq = (a) => {
  const seen = {};
  return a.filter((item) => {
    return seen.hasOwnProperty(item) ? false : (seen[item] = true);
  });
};
Salin selepas log masuk

The Best of Two Worlds (Linear Time)

const uniq = (a) => {
  const prims = { boolean: {}, number: {}, string: {} }, objs = [];
  return a.filter((item) => {
    const type = typeof item;
    if (type in prims) {
      return prims[type].hasOwnProperty(item) ? false : (prims[type][item] = true);
    } else {
      return objs.indexOf(item) >= 0 ? false : objs.push(item);
    }
  });
};
Salin selepas log masuk

Isih dan Penapis (Linear Masa)

const uniq = (a) => {
  return a.sort().filter((item, pos, ary) => !pos || item !== ary[pos - 1]);
};
Salin selepas log masuk

Unik dengan Kunci (Menapis Berdasarkan Panggilan Balik)

const uniqBy = (a, key) => {
  const seen = {};
  return a.filter((item) => {
    const k = key(item);
    return seen.hasOwnProperty(k) ? false : (seen[k] = true);
  })
};
Salin selepas log masuk

Memelihara Kejadian Pertama atau Terakhir (Menggunakan Tetapkan atau Peta)

const uniqByKeepFirst = (a, key) => {
  const seen = new Set();
  return a.filter((item) => {
    const k = key(item);
    return seen.has(k) ? false : seen.add(k);
  });
};

const uniqByKeepLast = (a, key) => {
  return [...new Map(a.map((x) => [key(x), x]))].values();
};
Salin selepas log masuk

Pilih pendekatan yang menjajarkan dengan jenis tatasusunan dan keperluan prestasi anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengeluarkan Nilai Pendua dengan Cekap daripada Tatasusunan JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan