Mam tablicę obiektów, która wygląda następująco:

const arr = [
  {integer: "3"},
  {integer: "500"}
]

W rezultacie chcę uzyskać obiekt, który wygląda następująco: mergedObj = {digits: "3500"}

Próbowałem użyć funkcji redukuj, ale wygląda na to, że robię coś nie tak. Oto mój kod:

var mergedObj = arr.reduce((acc, obj) => {

   acc["digits"] = [acc[obj.integer]].concat(obj.integer).join("");

    return acc;
}, {});

Oto wynik tego, co otrzymuję:

"Object is", [object Object] {
  digits: "500"
}

Problem w tym, że brakuje mi pierwszej części cyfry. Proszę pomóż mi! Z góry dziękuję!

0
danny_773 1 kwiecień 2020, 09:48

3 odpowiedzi

Najlepsza odpowiedź

Prawie to masz. Część [acc[obj.integer]] powinna być [acc.digits]. Zresztą możesz to zrobić znacznie prościej:

const arr = [
  {integer: "3"},
  {integer: "500"}
]

var mergedObj = arr.reduce((acc, obj) => {

   acc.digits += obj.integer;

    return acc;
}, { digits: '' });

console.log(mergedObj);
1
Sebastian Kaczmarek 1 kwiecień 2020, 07:14

Spróbuj tego poniżej:

const arr = [
   {integer: "3"},
   {integer: "500"}
]

let output = {'digits':''};
arr.map(function (item) {
    output['digits'] += item['integer']
});
console.log(output);
0
Abhishek Kulkarni 1 kwiecień 2020, 06:53

Użyj Array.map(), aby utworzyć tablicę integer, a następnie połącz. Przypisz do właściwości digits nowego obiektu:

const arr = [
  {integer: "3"},
  {integer: "500"}
]

const result = {
  digits: arr.map(o => o.integer).join('')
};

console.log(result);
2
Ori Drori 1 kwiecień 2020, 07:05