ホームページ > 記事 > ウェブフロントエンド > JavaScriptの属性を合計する方法
JavaScript は、Web 開発、サーバーサイド プログラミング、その他の分野で広く使用されている非常に重要なプログラミング言語です。一般的な要件の 1 つは、オブジェクトのプロパティを合計することです。これがこの記事のトピックです。
始める前に、簡単な例を見てみましょう。名前と年齢という 2 つの属性を持つオブジェクト人物がいるとします。次に、このオブジェクトの合計年齢を調べたいと思います。どうすればよいでしょうか?
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
上記の例では、各人の年齢属性を変数 sum に 1 つずつ加算することで合計を取得します。ただし、属性の数が多い場合、この方法は実行できません。したがって、より効率的で便利な方法を使用する必要があります。
次に、オブジェクト内のすべての数値プロパティの合計を求める 3 つの異なる方法を示します。これら 3 つのメソッドは次のとおりです。
各メソッドについて詳しく説明します。
方法 1: 単純なループ合計方法
この方法は最も直接的な方法であり、オブジェクト内のすべての属性を走査し、数値で属性をフィルターで除外し、それらを次の方法で 1 つずつ比較します。 1 つ追加します。コードの実装は次のとおりです。
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
上記のコードは、パラメーターがオブジェクトである sumProperties() 関数を定義します。関数では、for...in ループを使用して、オブジェクト内のすべてのプロパティを反復処理します。属性の値が数値の場合は、それを変数 sum に加算します。最後に、関数は変数 sum を戻り値として呼び出し元に返します。
この方法はシンプルで明確で、小規模なオブジェクトに適しています。ただし、大規模なオブジェクト (数百のプロパティなど) を処理する場合は、非常に時間がかかります。
方法 2: Object.keys() と配列の reduce() メソッドを組み合わせる
Object.keys() は JavaScript の非常に実用的なメソッドで、すべてのキーを取得するために使用されます。オブジェクト プロパティ名 (継承されたプロパティを除く)。 arrayreduce() メソッドと組み合わせると、オブジェクト内のプロパティを簡単に合計できます。コードの実装は次のとおりです。
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
上記のコードでは、sumProperties() 関数は前のメソッドと似ています。この関数では、Object.keys() メソッドを使用して、オブジェクト内のすべてのプロパティ名の配列を取得します。次に、配列のreduce()メソッドを呼び出し、配列内の各項目を変数sumに追加します。属性の値が数値でない場合、変数 sum には何もせず、そのままにしておきます。最後に、変数 sum を関数の戻り値として呼び出し元に返します。
方法 3: for...in ループと hasOwnProperty() メソッドを組み合わせる
このメソッドは、for...in ループと JavaScript の hasOwnProperty() メソッドを組み合わせて、削除をフィルター処理します。オブジェクトから継承されたプロパティ。コードの実装は次のとおりです。
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
上記のコードでは、最初のメソッドのコードを変更しました。 for...in ループでは、hasOwnProperty() メソッドを使用して、継承されたプロパティをフィルターで除外します。この方法はより一般的で、ほとんどの状況に適しています。ただし、このメソッドは属性名にスペースなどの特殊文字が含まれている場合には対応できないことに注意してください。
結論
上記の 3 つの方法は、ほとんどの場合のニーズを満たすことができます。ただし、これらの方法は完璧ではなく、特殊な場合には問題が発生する可能性があることに注意してください。しかし、それらがどのように機能するのか、そしてその長所と短所は何かをより深く理解できれば、それらをより良く活用できるようになります。
以上がJavaScriptの属性を合計する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。