Rumah > Soal Jawab > teks badan
Adakah ini menimbulkan lebih kekeliruan? Adakah pemungut sampah akan gembira dengan ini? </p>
P粉7920264672023-08-23 10:44:49
Object.fromEntries
(ES10)Penyelesaian tempatan dan tidak berubah menggunakan kaedah Object.fromEntries
baharu:
const newObj = Object.fromEntries( Object.entries(obj).map(([k, v]) => [k.toLowerCase(), v]) );
Sehingga fungsi ini tersedia secara meluas, anda boleh menggunakan polyfill takrif tersuai berikut:
Object.fromEntries = arr => Object.assign({}, ...Array.from(arr, ([k, v]) => ({[k]: v}) ));
Satu faedah ialah kaedah ini adalah bertentangan dengan Object.entries
, jadi kini anda boleh bertukar-tukar antara perwakilan objek dan tatasusunan.
P粉2587888312023-08-23 00:25:13
Cara terpantas yang boleh saya fikirkan ialah mencipta objek baharu:
var key, keys = Object.keys(obj); var n = keys.length; var newobj={} while (n--) { key = keys[n]; newobj[key.toLowerCase()] = obj[key]; }
Saya tidak cukup arif dengan kerja dalaman semasa v8 untuk memberikan jawapan yang jelas. Beberapa tahun yang lalu saya melihat video di mana pembangun membincangkan objek dan jika saya ingat dengan betul ia hanya mengalih keluar rujukan dan membenarkan pemungut sampah menanganinya. Tetapi itu adalah beberapa tahun yang lalu, jadi walaupun ia benar dahulu, ia tidak semestinya benar sekarang.
Adakah ia akan menyusahkan anda nanti? Ia bergantung pada apa yang anda lakukan, tetapi mungkin tidak. Mencipta objek fana adalah sangat biasa, jadi kod dioptimumkan untuk mengendalikannya. Tetapi setiap persekitaran mempunyai batasannya dan mungkin ia akan menyebabkan masalah kepada anda. Anda perlu menguji dengan data sebenar.