Saya punya banyak objek, di mana saya hanya mengambil lokasi. Tujuan saya adalah menggabungkan array lokasi ini menjadi satu array, namun saya gagal melakukannya dan mendapatkan array kosong. Beginilah cara saya melakukannya:
let results = [{
id: '1',
locations: ['aaaa', 'bbbbbb', 'cccccc']
},
{
id: '2',
locations: []
},
{
id: '3',
locations: ['ddd', 'aaadsad', 'sefd']
},
{
id: '4',
locations: ['ffff', 'eeee', 'sfdsfsd']
},
];
const locationIds = [].concat.apply([], ...results.filter(s => s.locations && s.locations.length > 0).map(({
locations
}) => ({
locations
})));
console.log(locationIds);
apa yang saya lakukan salah di sini? Hasilnya seharusnya
['aaaa', 'bbbbbb', 'cccccc', 'ddd', 'aaadsad', 'sefd', 'ffff', 'eeee', 'sfdsfsd'];
javascript
arrays
typescript
pengguna122222
sumber
sumber
flatMap
seperti di sini: stackoverflow.com/questions/39837678/…Anda dapat mencoba dengan
flatMap()
:sumber
Anda dapat mengambil
Array#flatMap
dengan properti yang diinginkan. Jika properti tidak diberikan, tambahkan array default|| []
.sumber
Dapat juga menyelesaikan menggunakan fungsi Reduce dari Array.prototype.
semoga ini membantu
sumber
Saya menghabiskan waktu terlalu lama untuk tidak memposting solusi saya sendiri - teka-teki yang menarik bagi saya, meskipun jawaban lain tidak diragukan lagi lebih berkinerja dan mudah dibaca. Ini menggunakan jenis strategi yang sama dengan posting asli Anda, yang mungkin membantu menunjukkan di mana kesalahannya.
sumber