JavaScript ialah bahasa pengaturcaraan yang sangat penting yang digunakan secara meluas dalam pembangunan web, pengaturcaraan sebelah pelayan dan bidang lain. Salah satu keperluan biasa ialah menjumlahkan sifat dalam objek, yang juga menjadi topik artikel ini.
Sebelum kita mula, mari lihat contoh mudah. Katakan ada orang objek, yang mempunyai dua atribut nama dan umur. Sekarang kita ingin mencari jumlah umur objek ini. Bagaimana kita harus melakukannya?
var person1 = {name: "Alice", age: 23} var person2 = {name: "Bob", age: 25} var person3 = {name: "Charlie", age: 27} var sum = person1.age + person2.age + person3.age; console.log(sum); // 输出结果为:75
Dalam contoh di atas, kita memperoleh jumlah dengan menambah atribut umur setiap orang satu demi satu kepada jumlah berubah. Walau bagaimanapun, kaedah ini tidak boleh dilaksanakan apabila bilangan atribut adalah besar. Oleh itu, kita perlu menggunakan beberapa kaedah yang lebih cekap dan mudah.
Seterusnya, kami akan menunjukkan tiga kaedah berbeza untuk mencari jumlah semua sifat berangka dalam objek. Tiga kaedah ini ialah:
Kami akan menerangkan setiap kaedah secara terperinci.
Kaedah 1: Kaedah penjumlahan gelung mudah
Kaedah ini ialah kaedah paling langsung merentasi semua atribut dalam objek, menapis atribut dengan nilai berangka, dan kemudian membandingkannya satu dengan. satu. Berikut ialah pelaksanaan kod:
function sumProperties(obj) { var sum = 0; for (var prop in obj) { if (typeof obj[prop] === 'number') { sum += obj[prop]; } } return sum; } var person = { name: 'Alice', age: 23, salary: 5000.00 }; var total = sumProperties(person); console.log(total); // 输出结果为:5023
Kod di atas mentakrifkan fungsi sumProperties(), yang parameternya ialah objek. Dalam fungsi tersebut, kami menggunakan gelung for...in untuk melelaran melalui semua sifat dalam objek. Jika nilai atribut ialah nombor, tambahkannya pada jumlah pembolehubah. Akhirnya, fungsi mengembalikan jumlah pembolehubah sebagai nilai pulangan kepada pemanggil.
Kaedah ini mudah dan jelas, sesuai untuk objek berskala kecil. Tetapi jika anda ingin berurusan dengan objek berskala besar (seperti ratusan hartanah), ini akan memakan masa yang sangat lama.
Kaedah 2: Menggabungkan Object.keys() dengan kaedah array reduce()
Object.keys() ialah kaedah yang sangat praktikal dalam JavaScript Ia digunakan untuk mendapatkan semua kunci masuk objek. Nama harta (tidak termasuk harta warisan). Digabungkan dengan kaedah array reduce(), kita boleh menjumlahkan sifat dalam objek dengan mudah. Berikut ialah pelaksanaan kod:
function sumProperties(obj) { return Object.keys(obj).reduce(function(sum, key) { return typeof obj[key] === 'number' ? sum + obj[key] : sum; }, 0); } var person = { name: 'Alice', age: 23, salary: 5000.00 }; var total = sumProperties(person); console.log(total); // 输出结果为:5023
Dalam kod di atas, fungsi sumProperties() adalah serupa dengan kaedah sebelumnya. Dalam fungsi, kami menggunakan kaedah Object.keys() untuk mendapatkan tatasusunan semua nama harta dalam objek. Kemudian, kami memanggil kaedah reduce() tatasusunan dan menambah setiap item dalam tatasusunan kepada jumlah pembolehubah. Jika nilai atribut bukan nombor, kami tidak melakukan apa-apa dengan jumlah pembolehubah dan biarkan ia seperti sedia ada. Akhir sekali, kami mengembalikan jumlah berubah kepada pemanggil sebagai nilai pulangan fungsi.
Kaedah tiga: gabungkan untuk...dalam gelung dengan kaedah hasOwnProperty()
Kaedah ini menggabungkan untuk...dalam gelung dengan kaedah hasOwnProperty() dalam JavaScript untuk menapis Alih keluar sifat yang diwarisi daripada objek. Pelaksanaan kod adalah seperti berikut:
function sumProperties(obj) { var sum = 0; for (var prop in obj) { if (obj.hasOwnProperty(prop)) { if (typeof obj[prop] === 'number') { sum += obj[prop]; } } } return sum; } var person = { name: 'Alice', age: 23, salary: 5000.00 }; var total = sumProperties(person); console.log(total); // 输出结果为:5023
Dalam kod di atas, kami mengubah suai kod kaedah pertama. Dalam gelung untuk...dalam, kami menggunakan kaedah hasOwnProperty() untuk menapis sifat yang diwarisi. Kaedah ini lebih umum dan sesuai untuk kebanyakan situasi. Walau bagaimanapun, perlu diingatkan bahawa kaedah ini tidak boleh mengendalikan kes di mana nama atribut mengandungi aksara khas seperti ruang.
Kesimpulan
Tiga kaedah di atas boleh memenuhi keperluan kebanyakan kes. Walau bagaimanapun, perlu diingatkan bahawa kaedah ini tidak sempurna dan ia boleh menyebabkan masalah dalam beberapa kes khas. Tetapi jika kita lebih memahami cara mereka bekerja, dan apakah kekuatan dan kelemahan mereka, kita boleh menggunakannya dengan lebih baik.
Atas ialah kandungan terperinci Bagaimana untuk menjumlahkan atribut javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!