キー名は異なるが対応する値が同じであるオブジェクトの2つの配列を組み合わせる方法は?

ラマナスマンダル
const cafes = [
  {
    name: "Bazaar Cafe",
    place_id: "kjk234g4gcvfx8usg1l33pi",
  },
  {
    name: "Ashley's Cafe",
    place_id: "12hydbdf76sljfts87sbfis",
  },
  {
    name: "Avenue Cafe",
    place_id: "skjd86svvfdrsv55svbvf3f",
  },
  {
    name: "Hi-Lo Cafe",
    place_id: "mjdhgetr4pojfyts22fzfsh",
  },
  {
    name: "California Chicken Cafe",
    place_id: "12hydbdf76sljfts87sbfis",
  },
  {
    name: "Avenue Bakery Cafe",
    place_id: "jahgde7wgdiau8ewsahgosd",
  },
  {
    name: "Philz Coffee",
    place_id: "urhw3837ehalod7w02b7835",
  },
];

const places = [
  {
    id: "jahgde7wgdiau8ewsahgosd",
    street_no: "60H",
    locality: "Solomos Island Road",
    postal_code: "20688",
    lat: "36.7783 N",
    long: "119.4179 W",
  },
  {
    id: "12hydbdf76sljfts87sbfis",
    street_no: "1B",
    locality: "Macarthur Blvd",
    postal_code: "20619",
    lat: "38.1781 N",
    long: "118.4171 W",
  },
  {
    id: "kjk234g4gcvfx8usg1l33pi",
    street_no: "45250",
    locality: "Worth Avenue, Unit A",
    postal_code: "20619",
    lat: "36.1152",
    long: "117.521",
  },
  {
    id: "saswe3s6yydtdr52hsd72yst",
    street_no: "1X",
    locality: "Macarthur Blvd",
    postal_code: "20687",
    lat: "36.7783",
    long: "119.4179",
  },
  {
    id: "skjd86svvfdrsv55svbvf3f",
    street_no: "7S",
    locality: "Three Notch Road",
    postal_code: "20619",
    lat: "36.83",
    long: "119.6",
  },
  {
    id: "mjdhgetr4pojfyts22fzfsh",
    street_no: "22803",
    locality: "Gunston Dr Lexington Park",
    postal_code: "20688",
    lat: "35.7788",
    long: "119.979",
  },
  {
    id: "urhw3837ehalod7w02b7835",
    street_no: "225",
    locality: "Macarthur Blvd",
    postal_code: "20687",
    lat: "35.77813",
    long: "119.41791",
  },
];

最終的な結合配列を次のようにしたい-

finalArr = [
  {
    id: "kjk234g4gcvfx8usg1l33pi",
    street_no: "45250",
    locality: "Worth Avenue, Unit A",
    postal_code: "20619",
    lat: "36.1152",
    long: "117.521",
    name: "Bazaar Cafe"
  },
  {
    id: "12hydbdf76sljfts87sbfis",
    street_no: "1B",
    locality: "Macarthur Blvd",
    postal_code: "20619",
    lat: "38.1781 N",
    long: "118.4171 W",
    name: "Ashley's Cafe"
  },
  {
    id: "12hydbdf76sljfts87sbfis",
    street_no: "1B",
    locality: "Macarthur Blvd",
    postal_code: "20619",
    lat: "38.1781 N",
    long: "118.4171 W",
    name: "California Chicken Cafe"
  },
  {
    id: "skjd86svvfdrsv55svbvf3f",
    street_no: "7S",
    locality: "Three Notch Road",
    postal_code: "20619",
    lat: "36.83",
    long: "119.6",
    name: "Avenue Cafe"
  },
  {
    id: "mjdhgetr4pojfyts22fzfsh",
    street_no: "22803",
    locality: "Gunston Dr Lexington Park",
    postal_code: "20688",
    lat: "35.7788",
    long: "119.979",
    name: "Hi-Lo Cafe"
  },
  {
    id: "jahgde7wgdiau8ewsahgosd",
    street_no: "60H",
    locality: "Solomos Island Road",
    postal_code: "20688",
    lat: "36.7783 N",
    long: "119.4179 W",
    name: "Avenue Bakery Cafe"
  }, 
  {
    id: "urhw3837ehalod7w02b7835",
    street_no: "225",
    locality: "Macarthur Blvd",
    postal_code: "20687",
    lat: "35.77813",
    long: "119.41791",
    name: "Philz Coffee"
  }
];

私はそれをこのように実装しようとしましたが、最終的な配列の最後のオブジェクトのみを取得します-

function combineById (cafes, places) {
  const finalArr = [];
  const wholeObj = {};
  const set = new Set();

  for (const cafe of cafes) { 
    let cafeId = cafe.place_id;
    let cafeName = cafe.name;
    for (const place of places) {
      if (cafeId === place.id && !set.has(cafeId)) {
        set.add(cafeId);
        wholeObj.id = place.id;
        wholeObj.streetNo = place.street_no;
        wholeObj.locality = place.locality;
        wholeObj.postalCode = place.postal_code;
        wholeObj.lat = place.lat;
        wholeObj.long = place.long;
        wholeObj.name = cafeName;
      }
    }
    finalArr.push(wholeObj);
  }
  return finalArr;
}

const resultArr = combineById(cafes, places);
console.log(resultArr);

この最後の配列と検索語という2つの引数を受け入れる検索関数を実装しようとしています。これまでのところ、検索関数は配列で正常に機能していますcafesが、placescafes配列を組み合わせるのに問題がありcombineByIdます。この関数は、最終的な配列の最後に結合されたオブジェクトの結果のみを返します。後でさらに操作するためにfinal配列を直接呼び出すことができるように、final配列内のオブジェクトのすべての組み合わせが必要です。解決策を見つけるのを手伝ってください。ありがとうございました。

テリーモース

複数の(そして潜在的に遅い)検索を避けるために、私は最初に場所の地図作成します

function combine(cafes, places) {

  // create Map of places with id as key
  const placesMap = new Map();
  places.forEach(place => {
    placesMap.set(place.id, place);
  });
  
  // combine each cafe with matching place
  const cafesWithPlaces = cafes.map(cafe => {
    let place = placesMap.get(cafe.place_id);
    
    // handle no matching place
    if (place === undefined) { return; }
    
    let combined = Object.assign({}, place);
    combined.name = cafe.name;
    return combined;
  });
  
  return cafesWithPlaces;
}

const cafes = [
  {
    name: "Bazaar Cafe",
    place_id: "kjk234g4gcvfx8usg1l33pi"
  },
  {
    name: "Ashley's Cafe",
    place_id: "12hydbdf76sljfts87sbfis"
  },
  {
    name: "Avenue Cafe",
    place_id: "skjd86svvfdrsv55svbvf3f"
  },
  {
    name: "Hi-Lo Cafe",
    place_id: "mjdhgetr4pojfyts22fzfsh"
  },
  {
    name: "California Chicken Cafe",
    place_id: "12hydbdf76sljfts87sbfis"
  },
  {
    name: "Avenue Bakery Cafe",
    place_id: "jahgde7wgdiau8ewsahgosd"
  },
  {
    name: "Philz Coffee",
    place_id: "urhw3837ehalod7w02b7835"
  }
];

const places = [
  {
    id: "jahgde7wgdiau8ewsahgosd",
    street_no: "60H",
    locality: "Solomos Island Road",
    postal_code: "20688",
    lat: "36.7783 N",
    long: "119.4179 W"
  },
  {
    id: "12hydbdf76sljfts87sbfis",
    street_no: "1B",
    locality: "Macarthur Blvd",
    postal_code: "20619",
    lat: "38.1781 N",
    long: "118.4171 W"
  },
  {
    id: "kjk234g4gcvfx8usg1l33pi",
    street_no: "45250",
    locality: "Worth Avenue, Unit A",
    postal_code: "20619",
    lat: "36.1152",
    long: "117.521"
  },
  {
    id: "saswe3s6yydtdr52hsd72yst",
    street_no: "1X",
    locality: "Macarthur Blvd",
    postal_code: "20687",
    lat: "36.7783",
    long: "119.4179"
  },
  {
    id: "skjd86svvfdrsv55svbvf3f",
    street_no: "7S",
    locality: "Three Notch Road",
    postal_code: "20619",
    lat: "36.83",
    long: "119.6"
  },
  {
    id: "mjdhgetr4pojfyts22fzfsh",
    street_no: "22803",
    locality: "Gunston Dr Lexington Park",
    postal_code: "20688",
    lat: "35.7788",
    long: "119.979"
  },
  {
    id: "urhw3837ehalod7w02b7835",
    street_no: "225",
    locality: "Macarthur Blvd",
    postal_code: "20687",
    lat: "35.77813",
    long: "119.41791"
  }
];

console.log(combine(cafes, places));

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

javascriptで同じキーを持つ配列内のオブジェクトを組み合わせる方法は?

分類Dev

キー値が同じである複数のJSONオブジェクトを組み合わせる方法

分類Dev

配列内で同じ値のオブジェクトを組み合わせる方法は?

分類Dev

配列内で同じ値のオブジェクトを組み合わせる方法は?

分類Dev

同じキー値を持つ配列内のJavaScriptオブジェクトを組み合わせる

分類Dev

2つのオブジェクトの配列があります。これらの配列では、IDが同じである場合、IDを一致させたいのですが、同じIDの情報を組み合わせた新しい配列が必要です

分類Dev

Javascript:オブジェクトの配列内の2つのキーの組み合わせを検出するための最良の方法は何ですか

分類Dev

同じキーを持つがJSON配列内の値が異なる2つのJSONオブジェクトをアサートする方法

分類Dev

2つの配列を同じキーで組み合わせる方法は?

分類Dev

JavaScriptで2つの配列をオブジェクトの配列に組み合わせる方法は?

分類Dev

両方の値を保持しながら、異なる配列で2つのオブジェクトを組み合わせるにはどうすればよいですか?

分類Dev

オブジェクトのキー/値を単一の配列に組み合わせる方法は?

分類Dev

オブジェクト配列の値を1つの配列に組み合わせる方法は?

分類Dev

Javascriptのプロパティに基づいて、サイズの異なる2つのオブジェクトの配列を組み合わせる方法は?

分類Dev

2つの配列を組み合わせて、キーが同じ場合にチャンク化する方法

分類Dev

同じオブジェクトのキーを含む複数のサブ配列を組み合わせる方法は?

分類Dev

異なる値を持ついくつかの同じキーを持つ以下の配列があります。PHPで同じキー値をそのキーと組み合わせるにはどうすればよいですか?私はWAMP、Codeigniterを使用しています

分類Dev

Javaでは、オブジェクトの2つのJSON配列をどのように組み合わせることができますか?

分類Dev

Objective-CiOSで同じ値のオブジェクトの配列を組み合わせる

分類Dev

2つの異なるオブジェクトの配列をJavaScriptで1つの新しいオブジェクトの配列に組み合わせる方法は?

分類Dev

同じ列で値が異なる2つのテーブルを組み合わせて、一致しないテーブルのみを返します

分類Dev

オブジェクトの複数の配列を異なるキーと組み合わせる

分類Dev

2つの異なるオブジェクトキーを比較し、キーがJavascriptで同じである場合、その値を更新するにはどうすればよいですか?

分類Dev

Pythonで同じキーを持つ2つの異なる辞書の値を組み合わせる方法

分類Dev

Javaでセットに2つのオブジェクトが同じであると思わせる方法は?

分類Dev

列の数は同じで行の数が異なる複数のシートを組み合わせる

分類Dev

キーでオブジェクトの配列を組み合わせる

分類Dev

同じ日付オブジェクトを1つのセクションに組み合わせる方法は?

分類Dev

サイズが異なる2つのJSONオブジェクトをIDと組み合わせる

Related 関連記事

  1. 1

    javascriptで同じキーを持つ配列内のオブジェクトを組み合わせる方法は?

  2. 2

    キー値が同じである複数のJSONオブジェクトを組み合わせる方法

  3. 3

    配列内で同じ値のオブジェクトを組み合わせる方法は?

  4. 4

    配列内で同じ値のオブジェクトを組み合わせる方法は?

  5. 5

    同じキー値を持つ配列内のJavaScriptオブジェクトを組み合わせる

  6. 6

    2つのオブジェクトの配列があります。これらの配列では、IDが同じである場合、IDを一致させたいのですが、同じIDの情報を組み合わせた新しい配列が必要です

  7. 7

    Javascript:オブジェクトの配列内の2つのキーの組み合わせを検出するための最良の方法は何ですか

  8. 8

    同じキーを持つがJSON配列内の値が異なる2つのJSONオブジェクトをアサートする方法

  9. 9

    2つの配列を同じキーで組み合わせる方法は?

  10. 10

    JavaScriptで2つの配列をオブジェクトの配列に組み合わせる方法は?

  11. 11

    両方の値を保持しながら、異なる配列で2つのオブジェクトを組み合わせるにはどうすればよいですか?

  12. 12

    オブジェクトのキー/値を単一の配列に組み合わせる方法は?

  13. 13

    オブジェクト配列の値を1つの配列に組み合わせる方法は?

  14. 14

    Javascriptのプロパティに基づいて、サイズの異なる2つのオブジェクトの配列を組み合わせる方法は?

  15. 15

    2つの配列を組み合わせて、キーが同じ場合にチャンク化する方法

  16. 16

    同じオブジェクトのキーを含む複数のサブ配列を組み合わせる方法は?

  17. 17

    異なる値を持ついくつかの同じキーを持つ以下の配列があります。PHPで同じキー値をそのキーと組み合わせるにはどうすればよいですか?私はWAMP、Codeigniterを使用しています

  18. 18

    Javaでは、オブジェクトの2つのJSON配列をどのように組み合わせることができますか?

  19. 19

    Objective-CiOSで同じ値のオブジェクトの配列を組み合わせる

  20. 20

    2つの異なるオブジェクトの配列をJavaScriptで1つの新しいオブジェクトの配列に組み合わせる方法は?

  21. 21

    同じ列で値が異なる2つのテーブルを組み合わせて、一致しないテーブルのみを返します

  22. 22

    オブジェクトの複数の配列を異なるキーと組み合わせる

  23. 23

    2つの異なるオブジェクトキーを比較し、キーがJavascriptで同じである場合、その値を更新するにはどうすればよいですか?

  24. 24

    Pythonで同じキーを持つ2つの異なる辞書の値を組み合わせる方法

  25. 25

    Javaでセットに2つのオブジェクトが同じであると思わせる方法は?

  26. 26

    列の数は同じで行の数が異なる複数のシートを組み合わせる

  27. 27

    キーでオブジェクトの配列を組み合わせる

  28. 28

    同じ日付オブジェクトを1つのセクションに組み合わせる方法は?

  29. 29

    サイズが異なる2つのJSONオブジェクトをIDと組み合わせる

ホットタグ

アーカイブ