Rumah > Soal Jawab > teks badan
var a = [1,2,3,4,5,6];
var b = [2,3,6];
Tatasusunan b ialah subset tatasusunan a Alih keluar elemen yang mengandungi b daripada a, dan akhirnya Apakah pilihan terbaik?
巴扎黑2017-05-19 10:44:41
function diff(a1, a2) {
return a1.concat(a2).filter(function (val, index, arr) {
return arr.indexOf(val) === arr.lastIndexOf(val);
});
}
function diff2(a1, a2) {
return a1.filter(val => {
return a2.indexOf(val) === -1;
})
}
高洛峰2017-05-19 10:44:41
Menggunakan kaedah filter
Array boleh menyelesaikan masalah anda Pelaksanaan khusus adalah sangat mudah, dan orang lain juga telah menjawabnya.
Jika anda tidak keberatan merujuk pustaka pihak ketiga, anda disyorkan untuk memperkenalkan lodash. Pustaka ini mengandungi sejumlah besar kaedah untuk memproses tatasusunan Jika anda mempunyai banyak senario operasi tatasusunan, ini amat disyorkan.
Ia mempunyai fungsi khusus untuk menangani masalah ini, yang dipanggil perbezaan Sudah tentu, rakan sekelas berkata sebelum ini anda juga boleh menggunakan, tetapi ia tidak semudah perbezaan.
"_" dalam kod di bawah ialah objek lalai selepas memperkenalkan lodash Semua kaedah yang ditakrifkan oleh lodash berada di bawahnya, sedikit seperti "$" yang digunakan selepas memperkenalkan jQuery
.var a = [1,2,3,4,5,6];
var b = [2,3,6];
var result = _.difference(a, b); // result=[1,4,5]
迷茫2017-05-19 10:44:41
Kenapa susah-susah guna kaedah loadash
,直接用数组的filter
:
var a = [1,2,3,4,5,6];
var b = [2,3,6];
var ans = a.filter((n) => !b.includes(n));
console.log(ans); //[1, 4, 5];