Mam array, który wygląda

[
    { "Fare":10, "TotalFare":30 },
    { "Fare":20, "TotalFare":50 },
    { "Fare":30, "TotalFare":100 }
]

Teraz chcę dodać te taryfę w jednej zmiennej w indeksie 0

Jak kiedy piszę array[0].fare powinienem uzyskać całość i.e 60

Tak, wiem, że mogę to zrobić za pętlę jak array[0].fare += array[i].fare

Ale czy jest jakiś lepszy sposób, aby to zrobić,

Ponieważ moja tablica składa się z kolumn 64/65, które muszę dodać i będzie bardzo długi, jeśli piszę jak powyżej,

Co powinienem tutaj zrobić?

0
user6656728 4 czerwiec 2018, 09:49

3 odpowiedzi

Najlepsza odpowiedź

Możesz użyć metody reduce w połączeniu z Object.keys.

let arr = [ { "Fare":10, "TotalFare":30 }, { "Fare":20, "TotalFare":50 }, { "Fare":30, "TotalFare":100 } ]

arr[0] = Object.keys(arr[0]).reduce(function(obj, key){
  obj[key] = arr.map(a => a[key]).reduce((a,b) => a + b);
  return obj;
},{});
console.log(arr[0]);
0
Mihai Alexandru-Ionut 4 czerwiec 2018, 06:56

Najpierw musisz dodać nowy obiekt w indeksie 0 tablicy za pomocą unshift() Następnie możesz użyć pętli forEach() jak poniżej:

var arr = [
    { "Fare":10, "TotalFare":30 },
    { "Fare":20, "TotalFare":50 },
    { "Fare":30, "TotalFare":100 }
];
arr.unshift({"Fare":0});
arr.forEach(obj=>arr[0].Fare += obj.Fare);
console.log(arr[0].Fare);
0
Ankit Agarwal 4 czerwiec 2018, 06:56
array.reduce(function(acc, val) { return acc.fare + val; });

Nie przetestowałem tego, ale myślę, że powinieneś być w stanie użyć array.Reduce i uprościć rozwiązanie.

0
Madhan Kumar 4 czerwiec 2018, 06:53