Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

オブジェクトの配列内の同様の数値を合計する-JavaScript


このようなオブジェクトの配列があるとします-

const arr = [
   {"firstName":"John", "value": 89},
   {"firstName":"Peter", "value": 151},
   {"firstName":"Anna", "value": 200},
   {"firstName":"Peter", "value": 22},
   {"firstName":"Anna","value": 60}
];

このような配列を1つ取り込んで、firstNameプロパティに同様の値を持つすべてのオブジェクトのvalueプロパティを組み合わせるJavaScript関数を作成する必要があります。

したがって、上記の配列の場合、出力は次のようになります-

const output = [
   {"firstName":"John", "value": 89},
   {"firstName":"Peter", "value": 173},
   {"firstName":"Anna", "value": 260}
];

オブジェクトごとに、類似したオブジェクトを再帰的に検索します

(この質問のコンテキストの同様のオブジェクトは、同様のfirstName値を持つオブジェクトです。)

次に、valueプロパティを一方のオブジェクトに追加し、もう一方のオブジェクトを配列から削除します。これは、配列の最後に到達するまで実行されます。到達すると、アレイを目的のアレイに縮小します。

以下はコードです-

const arr = [
   {"firstName":"John", "value": 89},
   {"firstName":"Peter", "value": 151},
   {"firstName":"Anna", "value": 200},
   {"firstName":"Peter", "value": 22},
   {"firstName":"Anna","value": 60}
];
const sumSimilar = arr => {
   const res = [];
   for(let i = 0; i < arr.length; i++){
      const ind = res.findIndex(el => el.firstName === arr[i].firstName);
      if(ind === -1){
         res.push(arr[i]);
      }else{
         res[ind].value += arr[i].value;
      };
   };
   return res;
};
console.log(sumSimilar(arr));

出力

これにより、コンソールに次の出力が生成されます-

[
   { firstName: 'John', value: 89 },
   { firstName: 'Peter', value: 173 },
   { firstName: 'Anna', value: 260 }
]

  1. JavaScriptを使用した配列内のネストされたオブジェクト値の合計

    以下は、JavaScriptを使用して配列内のネストされたオブジェクト値を合計するコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <st

  2. 2つのオブジェクトを比較しながら配列のネストされた値をグループ化-JavaScript

    次のJSONオブジェクトがあるとします- const input = {    "before": {      "device": [        {          "id": "1234",          "price": "10",