Menapis jadual mungkin melibatkan berbilang keadaan penapisan, this.filter
里面存的是所有筛选条件的v-model状态的一个对象,this.tableData
是从后端获取的所有原始表格数据的数组,this.filteredTableData
ialah susunan data jadual yang ditapis.
filterTableData() {
this.filteredTableData = this.tableData.map((item, index) => {
Object.keys(this.filter).forEach(key => {
if (this.filter[key] && item[key] && item[key] === this.filter[key]) {
console.log(item)
return item
}
})
})
console.log(this.filteredTableData)
// this.paginateTableData()
},
Menulis seperti ini akan membuat susunan console.log(this.filteredTableData)
拿到一个全部是undefined
kedua. Ralat ini sepatutnya kerana forEach tidak boleh menggunakan return untuk keluar dari gelung.
Jadi saya nak tahu:
Bagaimana untuk melaksanakan fungsi ini apabila menggunakan peta dan sebaiknya jangan gunakan pembolehubah di dalam peta (anda boleh menggunakannya, tetapi anda hanya bimbang tentang prestasi)?
Jika jumlah data this.filteredTableData
sangat besar, adakah cara yang lebih baik?
Gunakan [].tapis terus...
Soalannya agak sukar untuk difahami
Jika anda ingin menukar peta kepada tatasusunan
masukkan sahaja
[...map]
dan itu sahajapenapis lebih sesuai.
Selain itu, dari mana datangnya idea bahawa penambahan pembolehubah mempengaruhi prestasi. Jangan bergantung pada meneka bahawa ia akan mengalami masalah prestasi sebelum sebarang masalah prestasi berlaku.
Sama ada anda menggunakan gelung for biasa sebaliknya, atau anda perlu mentakrifkan nilai bool di luar untukEach menilai.
Saya pernah menghadapi masalah yang disebabkan oleh menggunakan map dan forEach sebelum ini, dan kemudian menyelesaikannya dengan menggunakan untuk...dalam dan untuk...secara munasabah Bolehkah anda mengubah pemikiran anda dan tidak semestinya menggunakan map dan forEach untuk menyelesaikannya.
Jangan gunakan ini dalam forEach
Izinkan saya menjawab soalan anda tentang tatasusunan yang mengandungi
undefined
.undefined
的问题吧。你在map函数里 没有
Jika tiadareturn
return
dalam fungsi peta, sudah tentu tiada nilai pulangan yang tidak dipaparkan sudah tentu tidak ditentukan.Saya tidak tahu sama ada itu yang anda maksudkan.