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