Bagaimana menemukan perbedaan antara dua array yang memiliki array bersarang di dalamnya? Saya mencoba berbagai pendekatan termasuk filter tetapi tidak berhasil. Kami memiliki dua array:

var arr1 = [ [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6]];
var arr2 = [ [1, 1], [1, 2], [1, 5]];

Yang saya butuhkan adalah mendapatkan array dengan elemen yang tidak ada di array pertama sebagai hasilnya: [[1, 3], [1, 4], [1, 6]]

0
me-and-viy 31 Oktober 2019, 01:30

1 menjawab

Jawaban Terbaik

Anda dapat memfilter pada arr1 dengan predikat tidak ada some elemen di arr2 di mana semua item cocok.

var arr1 = [ [1, 1], [1, 2, 3], [1, 3], [1, 4], [1, 5], [1, 6]];
var arr2 = [ [1, 1], [1, 2], [1, 5]];

let filtered = arr1.filter(a => 
   !arr2.some(a2 => a.length === a2.length && a2.every((n, i) => n === a[i] ))
)

console.log(filtered)

Anda dapat membuat ini lebih efisien dengan mengorbankan ruang tambahan jika daftar Anda cukup panjang untuk menjaminnya.

2
Mark 30 Oktober 2019, 22:53