JavaScript: მასივის გამარტივება reduce() და map() გამოყენებით, შედეგად მიიღება undefined


sample = [
    {
      key1: 'value1',
      key2: 'val1',
      key3: [{ subkey1: 'a', subkey2: 'b' }]
    },
    {
      key1: 'value2',
      key2: 'val2',
      key3: [{ subkey1: 'c', subkey2: 'd' }]
    },
    {
      key1: 'value3',
      key2: 'val3',
      key3: [{ subkey1: 'e', subkey2: 'f' }]
    },
    {
      key1: 'value3',
      key2: 'val3',
      key3: [{ subkey1: 'g', subkey2: 'h' }]
    },
    {
      key1: 'value3',
      key2: 'val3',
      key3: [{ subkey1: 'i', subkey2: 'j' }]
    },
    { key1: 'value3', key2: 'val3', key3: [{ subkey1: 'k', subkey2: 'l' }] }
  ];

  result = Array.from(
    this.sample.reduce(
      (m, { key1, key3, key2 }) =>
        m.set(key1, [...(m.get(key1) || []), key3, key2]),
      new Map()
    ),
    ([key1, key3, key2]) => ({ key1, key3, key2 })
  );
  
  console.log(result);

მე ახალი ვარ JavaScript-ში და ვცდილობ ობიექტ-მასივზე ჯგუფირების ოპერაციის შესრულებას, რომელიც გამოიყურება შემდეგნაირად:

sample = [{key1: "value1", key2: "val1", key3: [{subkey1: "a", subkey2: "b"}]}
{key1: "value2", key2: "val2", key3: [{subkey1: "c", subkey2: "d"}]}
{key1: "value3", key2: "val3", key3: [{subkey1: "e", subkey2: "f"}]}
{key1: "value3", key2: "val3", key3: [{subkey1: "g", subkey2: "h"}]}
{key1: "value3", key2: "val3", key3: [{subkey1: "i", subkey2: "j"}]}
{key1: "value3", key2: "val3", key3: [{subkey1: "k", subkey2: "l"}]]

მე დავწინასწარმეტყველე შემდეგი კოდი, რათა მისი ჯგუფირება key1-ის მნიშვნელობის მიხედვით:

const result = Array.from(sample.reduce((m, {key1, key3, key2}) =>
m.set(key1, [...(m.get(key1) || []), key3, key2]), new Map()), ([key1, key3, key2]) =>
({key1, key3, key2}));

მაგრამ მე რაღაც ასეთი მექნება :

[{key1: "value3", key3: [{subkey1: "e", subkey2: "f"},{subkey1: "g", 
subkey2: "h"},{subkey1: "i", subkey2: "j"},{subkey1: "k", subkey2: 
"l"}], key2: **undefined**},.....etc]

მოლოდინი :

[{key1: "value3", key3: [{subkey1: "e", subkey2: "f"},{subkey1: "g", 
subkey2: "h"},{subkey1: "i", subkey2: "j"},{subkey1: "k", subkey2: 
"l"}],, key2: "val3"},.....etc]

საკეტი 2 აქ მაინც მოუფიქრებელია. ვინმემ ხომ ვერ მეტყვის, სად ვცდები ან რაიმე სხვა გზები, რომ მივიღო შედეგი, როგორც მოსალოდნელი იყო.

გმადლობთ,

უპასუხე #1

შენ იყენებ Array.from() და Map ობიექტს არასწორად და ძირითადად არასაჭიროდ. შენ გადაეცემი 4 არგუმენტს Map.set()-ს, როდესაც ის იღებს მხოლოდ 2 არგუმენტს.

let m = new Map();
m.set("1","2","3","4"); // essentially just m.set("1","2"), which set the key "1" to value "2";
let array = Array.from(m);
let array2 = Array.from(m,([a,b,c,d])=>{return {a,b,c,d}});
console.log(array);
console.log(array2);

ყველაზე მნიშვნელოვანი არის ის, რომ თქვენ არ ხართ დარწმუნებული, როგორ გსურთ თქვენი ობიექტების ჯგუფირება. თქვენი მაგალითი არ იძლევა რაიმე ინფორმაციას, რადგან ყველა მნიშვნელობა, გარდა key1-ის მნიშვნელობების, ტოლია. რა შედეგს ელით, როდესაც ჯგუფობთ key1-ის მნიშვნელობით, მაშინაც კი, როცა ჯგუფის წევრებს აქვთ სხვადასხვა მნიშვნელობები key2 და key3-ისთვის? გთხოვთ, საფუძვლიანად დაფიქრეთ, რა არის თქვენი დღისული შეყვანილი მონაცემები და შედეგი. შექმენით მკაფიო მონაცემთა სტრუქტურა.