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

JavaScriptのJSONグループオブジェクト


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

const arr = [
   { 'name': 'JON', 'flight':100, 'value': 12, type: 'uns' },
   { 'name': 'JON', 'flight':100, 'value': 35, type: 'sch' },
   { 'name': 'BILL', 'flight':200, 'value': 33, type: 'uns' },
   { 'name': 'BILL', 'flight':200, 'value': 45, type: 'sch' }
];

そのようなオブジェクトの配列を1つ取り込むJavaScript関数を作成する必要があります。関数は、オブジェクトから「value」キーと「type」キーをマップ削除し、それらの値をキー値ペアとしてそれぞれのオブジェクトに追加する必要があります。

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

const output = [
   { 'name': 'JON', 'flight':100, 'uns': 12, 'sch': 35 },
   { 'name': 'BILL', 'flight':200, 'uns': 33, 'sch': 45}
];

出力

このためのコードは-

になります
const arr = [
   { 'name': 'JON', 'flight':100, 'value': 12, type: 'uns' },
   { 'name': 'JON', 'flight':100, 'value': 35, type: 'sch' },
   { 'name': 'BILL', 'flight':200, 'value': 33, type: 'uns' },
   { 'name': 'BILL', 'flight':200, 'value': 45, type: 'sch' }
];
const groupArray = (arr = []) => {
   const res = arr.reduce(function (hash) {
      return function (r, o) {
         if (!hash[o.name]) {
            hash[o.name] = { name: o.name, flight: o.flight };
            r.push(hash[o.name]);
         }
         hash[o.name][o.type] = (hash[o.name][o.type] || 0) + o.value;
         return r;
      }
   }(Object.create(null)), []);
   return res;
};
console.log(groupArray(arr));

出力

そして、コンソールの出力は-

になります
[
   { name: 'JON', flight: 100, uns: 12, sch: 35 },
   { name: 'BILL', flight: 200, uns: 33, sch: 45 }
]

  1. JavaScriptのWeakMapオブジェクト。

    WeakMapオブジェクトには、要素としてキーと値のペアがあり、キーはオブジェクトである必要があり、値は任意のプリミティブ値またはオブジェクトにすることができます。 WeakMapでキーとして使用されるオブジェクトは、それらへの参照がない場合、ガベージコレクションされます。 以下はJavaScriptのWeakMapオブジェクトのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name=&

  2. JavaScriptでオブジェクトをマップします。

    マップオブジェクトはES6で導入され、キーと値のペアである要素のコレクションです。マップ内のキーまたは値は、オブジェクトまたはプリミティブ値にすることができます。 以下はJavaScriptのマップオブジェクトのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initia