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
DDDasal
2025-01-03 12:13:41643semak imbas

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)];

"Pintar" tetapi Pendekatan Naif (Kuadratik Masa)

const uniqueArray = a.filter((item, pos) => a.indexOf(item) === pos);

Hashtables to the Rescue (Masa Linear)

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

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);
    }
  });
};

Isih dan Penapis (Linear Masa)

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

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);
  })
};

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();
};

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!

Kenyataan:
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