Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Mencari Padanan dalam Tatasusunan Merentas Pelbagai Tatasusunan dalam Javascript?

Bagaimana untuk Mencari Padanan dalam Tatasusunan Merentas Pelbagai Tatasusunan dalam Javascript?

Barbara Streisand
Barbara Streisandasal
2024-10-31 01:58:29711semak imbas

How to Find Matches in Arrays Across Multiple Arrays in Javascript?

Mencari Padanan dalam Tatasusunan merentas Tatasusunan Berbeza

Pertimbangkan senario di mana anda mempunyai berbilang tatasusunan JavaScript dengan nilai rentetan, dan anda perlu mencari dan ekstrak hanya padanan yang sama dalam setiap tatasusunan.

Bayangkan anda mempunyai tatasusunan berikut:

var arr1 = ['apple', 'orange', 'banana', 'pear', 'fish', 'pancake', 'taco', 'pizza'];
var arr2 = ['taco', 'fish', 'apple', 'pizza'];
var arr3 = ['banana', 'pizza', 'fish', 'apple'];

Matlamat anda adalah untuk mendapatkan tatasusunan yang mengandungi hanya padanan yang muncul dalam ketiga-tiga tatasusunan, iaitu:

['apple', 'fish', 'pizza']

Tugas ini boleh dicapai tanpa menggunakan perpustakaan luaran. Satu pendekatan melibatkan penggunaan kaedah filter() dalam kombinasi dengan every().

var result = arrays.shift().filter(function(v) {
    return arrays.every(function(a) {
        return a.indexOf(v) !== -1;
    });
});

Dalam penyelesaian ini:

  • shift() mengalih keluar tatasusunan pertama daripada koleksi tatasusunan.
  • filter() mencipta tatasusunan baharu yang mengandungi hanya elemen yang melepasi keadaan yang ditentukan.
  • setiap() menyemak sama ada semua elemen dalam koleksi tatasusunan melepasi syarat.

Mengisih tatasusunan luar ( tatasusunan) berdasarkan panjang boleh mengoptimumkan prestasi.

arrays.sort(function(a, b) {
    return a.length - b.length;
});

Selain itu, jika pendua terdapat dalam tatasusunan, anda boleh menggunakan kaedah reduce() dan bukannya filter().

var result = arrays.shift().reduce(function(res, v) {
    if (res.indexOf(v) === -1 && arrays.every(function(a) {
        return a.indexOf(v) !== -1;
    })) res.push(v);
    return res;
}, []);

Dengan menggunakan kaedah ini, anda boleh mencari padanan dalam tatasusunan dengan berkesan merentas berbilang tatasusunan, walaupun ia mengandungi panjang atau pendua yang tidak diketahui.

Atas ialah kandungan terperinci Bagaimana untuk Mencari Padanan dalam Tatasusunan Merentas Pelbagai Tatasusunan dalam 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