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

JavaScriptのキープロパティに基づいてオブジェクトをグループ化する


それぞれ同じサイズの多くのサブ配列を含むparentArrayがあります。各サブ配列は、keyとvalueの2つのプロパティを含むオブジェクトの配列です。サブ配列内では、2つのオブジェクトが同じキーを持つことはできませんが、すべてのサブ配列には同じn個のキーのペアがあります。nはサブ配列のサイズです。

私たちの仕事は、オブジェクトのキーとしてキーを持ち、その特定のキーのすべての値を含む配列である値を持つオブジェクトを準備することです。

これがサンプルの親配列です-

const parentArray = [[
{
   key: 123,
   value: 'India'
}, {
   key: 124,
   value: 'USA'
}, {
   key: 125,
   value: 'Japan'
}, {
   key: 126,
   value: 'Denmark'
}, {
   key: 127,
   value: 'Austria'
},
], [
{
   key: 124,
   value: 'Kenya'
}, {
   key: 126,
   value: 'UK'
}, {
   key: 123,
   value: 'Germany'
}, {
   key: 127,
   value: 'Spain'
}, {
   key: 125,
   value: 'Portugal'
},
]];

親配列、次にすべてのサブ配列を1つずつ繰り返し処理し、一致するキーが見つかった場合はそれを値配列にプッシュし、それ以外の場合は新しい値配列を作成します。

このための完全なコードは-

になります
const parentArray = [[
{
   key: 123,
   value: 'India'
}, {
   key: 124,
   value: 'USA'
}, {
   key: 125,
   value: 'Japan'
}, {
   key: 126,
   value: 'Denmark'
}, {
   key: 127,
   value: 'Austria'
},
], [
{
   key: 124,
   value: 'Kenya'
}, {
   key: 126,
   value: 'UK'
}, {
   key: 123,
   value: 'Germany'
}, {
   key: 127,
   value: 'Spain'
}, {
   key: 125,
   value: 'Portugal'
},
]];
const map = {};
parentArray.forEach(arr => {
   arr.forEach(obj => {
      const { key, value } = obj;
      if(map[key]){
         map[key].push(value);
      }else{
         map[key] = [value]
      }
   })
});
console.log(map);

コンソールの出力は-

になります
{
   '123': [ 'India', 'Germany' ],
   '124': [ 'USA', 'Kenya' ],
   '125': [ 'Japan', 'Portugal' ],
   '126': [ 'Denmark', 'UK' ],
   '127': [ 'Austria', 'Spain' ]
}

  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> <style>

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

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