複数の一致するキーに基づいてオブジェクトをマージする-Javascript

スミティ

些細なことのように思える何かに苦労しています。私はオブジェクトの配列を持っています:

const vehicles = [
{
    "sku": "1234",
    "year": "2004",
    "make": "Chevrolet",
    "model": "Avalanche",
},
{
    "sku": "1234",
    "year": "2006",
    "make": "Chevrolet",
    "model": "Avalanche",
},
{
    "sku": "1234",
    "year": "2009",
    "make": "Chevrolet",
    "model": "Silverado 1500",
},
{
    "sku": "1234",
    "year": "2006",
    "make": "Chevrolet",
    "model": "Silverado 1500",
}]

私は上の一致したいskumakemodelの最終状態を持っているオブジェクトをフラット化:

const mutatedVehicles = [
  {
    "sku": "1234",
    "years": ["2004", "2006"],
    "make": "Chevrolet",
    "model": "Avalanche",
  },
  {
    "sku": "1234",
    "years": ["2009", "2006"],
    "make": "Chevrolet",
    "model": "Silverado 1500"
  }]

私は実際にPythonで最初は辞書を使用してこれを使用しましたが、最終的にはJSで使用可能なメソッドのいくつかを好みます。Array.forEach、Object.assign、およびその他のいくつかのメソッドを使用してみましたが、不足しています。

編集:私が試したコードのいくつかを共有するように頼まれました-それは私が最初に始めた場所であるため、JSではなくPythonです。

def match_props(f, x):
    if f['sku'] == x['sku'] and f['year'] != x['year'] and f['make'] == x['make'] and f['model'] == x['model']:
        return True
    else:
        return False

fitments = [
    {
        "sku": "1234",
        "year": "2004",
        "make": "Chevrolet",
        "model": "Avalanche",
        "drive": "",
    },
    {
        "sku": "1234",
        "year": "2009",
        "make": "Chevrolet",
        "model": "Silverado 1500",
        "drive": "",
    },
    {
        "sku": "1234",
        "year": "2006",
        "make": "Chevrolet",
        "model": "Silverado 1500",
        "drive": "",
    },
]

merged = []

for f1 in fitments:
    pMerge = {}
    for f2 in fitments:
        if match_props(f1, f2):
            pMerge = {
                    "sku": f1['sku'],
                    "make": f1['make'],
                    "model": f1['model'],
                    "drive": f1['drive'],
                    "years": [y for y in [f1['year'], f2['year']]]
            }
        else:
            pMerge = f2
    if pMerge not in merged:
        merged.append(pMerge)


print(merged)
Nikhil Aggarwal

Array.reduceObject.valuesを使用ます

const vehicles  = [{"sku":"1234","year":"2004","make":"Chevrolet","model":"Avalanche"},{"sku":"1234","year":"2006","make":"Chevrolet","model":"Avalanche"},{"sku":"1234","year":"2009","make":"Chevrolet","model":"Silverado 1500"},{"sku":"1234","year":"2006","make":"Chevrolet","model":"Silverado 1500"}];

let result = Object.values(vehicles.reduce((a,{sku, year, make, model}) => {
  let id = sku + "_" + make + "_" + model;
  if(a[id]) a[id].years.push(year)
  else a[id] = {sku, make, model, years : [year]}
  return a;
},{}));

console.log(result);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Javascript-別のオブジェクトの値マッピングに基づいてオブジェクトキーを更新する

分類Dev

特定のキーに基づいてオブジェクトの配列を再帰的にソートする:JavaScript

分類Dev

オブジェクトペアに一致するDOMの値に基づいて動的に変更するJavascript変数

分類Dev

javascriptのキー値に基づいて2つのjsonオブジェクトをマージします

分類Dev

2 つの配列内のオブジェクトを比較し、JavaScript の一致に基づいて返す

分類Dev

javascriptのキーに基づいてオブジェクトをマージします

分類Dev

キーに基づいてオブジェクトのJavaScript配列をグループ化する方法

分類Dev

特定のキーに基づいてオブジェクトのJavaScript配列をランダム化する

分類Dev

キーに基づいてソートせずにjavascriptオブジェクトをループする

分類Dev

キーに基づいてオブジェクトの JavaScript 配列から重複を削除します

分類Dev

Javascriptは、マッピングに基づいてオブジェクトのキー名を変換します

分類Dev

特定のキーと値をJavaScriptで一致した場合にどのようにオブジェクトをマージするには?

分類Dev

オブジェクトの親キーに基づいてオブジェクトをフィルタリングする(Javascript)

分類Dev

javascriptは、マッピングによって別のオブジェクトに基づいてオブジェクトのキー/値を更新します

分類Dev

Javascriptの複数の配列プロパティに基づいてオブジェクト配列のグループ化を解除する方法

分類Dev

各キーに複数の値が含まれている2つのJavascriptオブジェクトをマージする

分類Dev

idに基づいてオブジェクトを作成し、内部キーを配列JavaScriptにマージする方法

分類Dev

Javascript:重複していない場合にのみ(指定されたオブジェクトキーに基づいて)オブジェクトの2つの配列をマージします

分類Dev

配列の長さに基づいてオブジェクトを複数回複製する-Angular2 + / JavaScript

分類Dev

JavaScriptを使用して、文字列キーに一致する配列からすべてのオブジェクトを取得します

分類Dev

javascriptを使用して日付であるキーに基づいてオブジェクトの配列をソートする方法は?

分類Dev

Javascript:複数の値オブジェクトにキーを追加する

分類Dev

javascriptでIDによってオブジェクトの複数の配列をマージする方法は?

分類Dev

Javascriptで複数のキーに基づいてオブジェクトの配列をグループ化するにはどうすればよいですか?

分類Dev

javascriptの条件に基づいて2つのネストされたJSONオブジェクトをマージする

分類Dev

javascriptのキーに基づいて2つの配列のオブジェクトをマージして置き換える方法は?

分類Dev

オブジェクトの一致する一意のキーの数をカウントする方法(javascript)

分類Dev

IDの値を取得する方法と、複数のオブジェクトを単一の配列にマージしてJavaScriptにする方法も

分類Dev

javascriptの条件に基づいて配列から重複オブジェクトを削除する方法

Related 関連記事

  1. 1

    Javascript-別のオブジェクトの値マッピングに基づいてオブジェクトキーを更新する

  2. 2

    特定のキーに基づいてオブジェクトの配列を再帰的にソートする:JavaScript

  3. 3

    オブジェクトペアに一致するDOMの値に基づいて動的に変更するJavascript変数

  4. 4

    javascriptのキー値に基づいて2つのjsonオブジェクトをマージします

  5. 5

    2 つの配列内のオブジェクトを比較し、JavaScript の一致に基づいて返す

  6. 6

    javascriptのキーに基づいてオブジェクトをマージします

  7. 7

    キーに基づいてオブジェクトのJavaScript配列をグループ化する方法

  8. 8

    特定のキーに基づいてオブジェクトのJavaScript配列をランダム化する

  9. 9

    キーに基づいてソートせずにjavascriptオブジェクトをループする

  10. 10

    キーに基づいてオブジェクトの JavaScript 配列から重複を削除します

  11. 11

    Javascriptは、マッピングに基づいてオブジェクトのキー名を変換します

  12. 12

    特定のキーと値をJavaScriptで一致した場合にどのようにオブジェクトをマージするには?

  13. 13

    オブジェクトの親キーに基づいてオブジェクトをフィルタリングする(Javascript)

  14. 14

    javascriptは、マッピングによって別のオブジェクトに基づいてオブジェクトのキー/値を更新します

  15. 15

    Javascriptの複数の配列プロパティに基づいてオブジェクト配列のグループ化を解除する方法

  16. 16

    各キーに複数の値が含まれている2つのJavascriptオブジェクトをマージする

  17. 17

    idに基づいてオブジェクトを作成し、内部キーを配列JavaScriptにマージする方法

  18. 18

    Javascript:重複していない場合にのみ(指定されたオブジェクトキーに基づいて)オブジェクトの2つの配列をマージします

  19. 19

    配列の長さに基づいてオブジェクトを複数回複製する-Angular2 + / JavaScript

  20. 20

    JavaScriptを使用して、文字列キーに一致する配列からすべてのオブジェクトを取得します

  21. 21

    javascriptを使用して日付であるキーに基づいてオブジェクトの配列をソートする方法は?

  22. 22

    Javascript:複数の値オブジェクトにキーを追加する

  23. 23

    javascriptでIDによってオブジェクトの複数の配列をマージする方法は?

  24. 24

    Javascriptで複数のキーに基づいてオブジェクトの配列をグループ化するにはどうすればよいですか?

  25. 25

    javascriptの条件に基づいて2つのネストされたJSONオブジェクトをマージする

  26. 26

    javascriptのキーに基づいて2つの配列のオブジェクトをマージして置き換える方法は?

  27. 27

    オブジェクトの一致する一意のキーの数をカウントする方法(javascript)

  28. 28

    IDの値を取得する方法と、複数のオブジェクトを単一の配列にマージしてJavaScriptにする方法も

  29. 29

    javascriptの条件に基づいて配列から重複オブジェクトを削除する方法

ホットタグ

アーカイブ