Reputation: 1610
Suppose I've an array which contains the following objects:
{ home: 0, away: 1, value: 7.371215599659567 }
{ home: 0, away: 2, value: 8.216563231723296 }
{ home: 0, away: 3, value: 6.168310325432516 }
{ home: 0, away: 4, value: 3.5073431380070055 }
{ home: 0, away: 5, value: 1.6104197237111348 }
{ home: 0, away: 6, value: 0.6215879547521032 }
{ home: 1, away: 0, value: 3.6824984689062354 }
{ home: 1, away: 1, value: 8.276413244141352 }
{ home: 1, away: 2, value: 9.393263752817953 }
{ home: 1, away: 3, value: 7.174679043260096 }
{ home: 1, away: 4, value: 4.146565482578415 }
{ home: 1, away: 5, value: 1.9328356809373288 }
{ home: 1, away: 6, value: 0.7563380262857585 }
{ home: 2, away: 0, value: 2.097379162309316 }
{ home: 2, away: 1, value: 4.796821176334703 }
{ home: 2, away: 2, value: 5.534669783150271 }
{ home: 2, away: 3, value: 4.2926916030788105 }
{ home: 2, away: 4, value: 2.515879239794918 }
{ home: 2, away: 5, value: 1.187567428237771 }
{ home: 2, away: 6, value: 0.4699201039387404 }
{ home: 3, away: 0, value: 0.8211845706155819 }
{ home: 3, away: 1, value: 1.9075353125788463 }
{ home: 3, away: 2, value: 2.2325407930142736 }
{ home: 3, away: 3, value: 1.7539581905097126 }
{ home: 3, away: 4, value: 1.0397854130494248 }
{ home: 3, away: 5, value: 0.49576148435142064 }
{ home: 3, away: 6, value: 0.19789157500581256 }
{ home: 4, away: 0, value: 0.24773516000500195 }
{ home: 4, away: 1, value: 0.5830691164647543 }
{ home: 4, away: 2, value: 0.6904477295864787 }
{ home: 4, away: 3, value: 0.5480588412313669 }
{ home: 4, away: 4, value: 0.3278306643240631 }
{ home: 4, away: 5, value: 0.15752158873111574 }
{ home: 4, away: 6, value: 0.06329504444770173 }
{ home: 5, away: 0, value: 0.061151126935764334 }
{ home: 5, away: 1, value: 0.14545542986663187 }
{ home: 5, away: 2, value: 0.17383966843362755 }
{ home: 5, away: 3, value: 0.13909400923467197 }
{ home: 5, away: 4, value: 0.08377178524032308 }
{ home: 5, away: 5, value: 0.040486670771772315 }
{ home: 5, away: 6, value: 0.016348423714773092 }
{ home: 6, away: 0, value: 0.012806909587366471 }
{ home: 6, away: 1, value: 0.030713983064227724 }
{ home: 6, away: 2, value: 0.0369671174487187 }
{ home: 6, away: 3, value: 0.029756524980091948 }
{ home: 6, away: 4, value: 0.018012700795413502 }
{ home: 6, away: 5, value: 0.008742842144856435 }
{ home: 6, away: 6, value: 0.00354304640928744 }
I would like to sum all the values that have home
greather than 0, and away
less than home
, so I did:
let matrix = [
{ home: 0, away: 0, value: 3.3406433795989217 },
{ home: 0, away: 1, value: 7.371215599659567 },
{ home: 0, away: 2, value: 8.216563231723296 },
{ home: 0, away: 3, value: 6.168310325432516 },
{ home: 0, away: 4, value: 3.5073431380070055 },
{ home: 0, away: 5, value: 1.6104197237111348 },
{ home: 0, away: 6, value: 0.6215879547521032 },
{ home: 1, away: 0, value: 3.6824984689062354 },
{ home: 1, away: 1, value: 8.276413244141352 },
{ home: 1, away: 2, value: 9.393263752817953 },
{ home: 1, away: 3, value: 7.174679043260096 },
{ home: 1, away: 4, value: 4.146565482578415 },
{ home: 1, away: 5, value: 1.9328356809373288 },
{ home: 1, away: 6, value: 0.7563380262857585 },
{ home: 2, away: 0, value: 2.097379162309316 },
{ home: 2, away: 1, value: 4.796821176334703 },
{ home: 2, away: 2, value: 5.534669783150271 },
{ home: 2, away: 3, value: 4.2926916030788105 },
{ home: 2, away: 4, value: 2.515879239794918 },
{ home: 2, away: 5, value: 1.187567428237771 },
{ home: 2, away: 6, value: 0.4699201039387404 },
{ home: 3, away: 0, value: 0.8211845706155819 },
{ home: 3, away: 1, value: 1.9075353125788463 },
{ home: 3, away: 2, value: 2.2325407930142736 },
{ home: 3, away: 3, value: 1.7539581905097126 },
{ home: 3, away: 4, value: 1.0397854130494248 },
{ home: 3, away: 5, value: 0.49576148435142064 },
{ home: 3, away: 6, value: 0.19789157500581256 },
{ home: 4, away: 0, value: 0.24773516000500195 },
{ home: 4, away: 1, value: 0.5830691164647543 },
{ home: 4, away: 2, value: 0.6904477295864787 },
{ home: 4, away: 3, value: 0.5480588412313669 },
{ home: 4, away: 4, value: 0.3278306643240631 },
{ home: 4, away: 5, value: 0.15752158873111574 },
{ home: 4, away: 6, value: 0.06329504444770173 },
{ home: 5, away: 0, value: 0.061151126935764334 },
{ home: 5, away: 1, value: 0.14545542986663187 },
{ home: 5, away: 2, value: 0.17383966843362755 },
{ home: 5, away: 3, value: 0.13909400923467197 },
{ home: 5, away: 4, value: 0.08377178524032308 },
{ home: 5, away: 5, value: 0.040486670771772315 },
{ home: 5, away: 6, value: 0.016348423714773092 },
{ home: 6, away: 0, value: 0.012806909587366471 },
{ home: 6, away: 1, value: 0.030713983064227724 },
{ home: 6, away: 2, value: 0.0369671174487187 },
{ home: 6, away: 3, value: 0.029756524980091948 },
{ home: 6, away: 4, value: 0.018012700795413502 },
{ home: 6, away: 5, value: 0.008742842144856435 },
{ home: 6, away: 6, value: 0.00354304640928744 }
];
let c = matrix.reduce((acc, curr) => {
return acc += (acc.home > 0 && curr.away < acc.home) ? acc.value + curr.value : 0;
});
console.log(c);
but the script return [object Object]
what I did wrong?
Upvotes: 1
Views: 45
Reputation: 639
Reduce method takes two arguments - a function and the current total (generally you start with 0).
let total = matrix.reduce((x, element) => {
return x += (element.home > 0 && element.away < element.home) ? element.value : 0;
}, 0);
console.log(total);
Quick tip: Use better naming for easier debugging.
Upvotes: 1
Reputation: 1
You need to initialize acc
,with 0
.Also there were some logical mistake that I have corrected changed acc
to curr
.Have a look
let matrix = [{
home: 0,
away: 0,
value: 3.3406433795989217
},
{
home: 0,
away: 1,
value: 7.371215599659567
},
{
home: 0,
away: 2,
value: 8.216563231723296
},
{
home: 0,
away: 3,
value: 6.168310325432516
},
{
home: 0,
away: 4,
value: 3.5073431380070055
},
{
home: 0,
away: 5,
value: 1.6104197237111348
},
{
home: 0,
away: 6,
value: 0.6215879547521032
},
{
home: 1,
away: 0,
value: 3.6824984689062354
},
{
home: 1,
away: 1,
value: 8.276413244141352
},
{
home: 1,
away: 2,
value: 9.393263752817953
},
{
home: 1,
away: 3,
value: 7.174679043260096
},
{
home: 1,
away: 4,
value: 4.146565482578415
},
{
home: 1,
away: 5,
value: 1.9328356809373288
},
{
home: 1,
away: 6,
value: 0.7563380262857585
},
{
home: 2,
away: 0,
value: 2.097379162309316
},
{
home: 2,
away: 1,
value: 4.796821176334703
},
{
home: 2,
away: 2,
value: 5.534669783150271
},
{
home: 2,
away: 3,
value: 4.2926916030788105
},
{
home: 2,
away: 4,
value: 2.515879239794918
},
{
home: 2,
away: 5,
value: 1.187567428237771
},
{
home: 2,
away: 6,
value: 0.4699201039387404
},
{
home: 3,
away: 0,
value: 0.8211845706155819
},
{
home: 3,
away: 1,
value: 1.9075353125788463
},
{
home: 3,
away: 2,
value: 2.2325407930142736
},
{
home: 3,
away: 3,
value: 1.7539581905097126
},
{
home: 3,
away: 4,
value: 1.0397854130494248
},
{
home: 3,
away: 5,
value: 0.49576148435142064
},
{
home: 3,
away: 6,
value: 0.19789157500581256
},
{
home: 4,
away: 0,
value: 0.24773516000500195
},
{
home: 4,
away: 1,
value: 0.5830691164647543
},
{
home: 4,
away: 2,
value: 0.6904477295864787
},
{
home: 4,
away: 3,
value: 0.5480588412313669
},
{
home: 4,
away: 4,
value: 0.3278306643240631
},
{
home: 4,
away: 5,
value: 0.15752158873111574
},
{
home: 4,
away: 6,
value: 0.06329504444770173
},
{
home: 5,
away: 0,
value: 0.061151126935764334
},
{
home: 5,
away: 1,
value: 0.14545542986663187
},
{
home: 5,
away: 2,
value: 0.17383966843362755
},
{
home: 5,
away: 3,
value: 0.13909400923467197
},
{
home: 5,
away: 4,
value: 0.08377178524032308
},
{
home: 5,
away: 5,
value: 0.040486670771772315
},
{
home: 5,
away: 6,
value: 0.016348423714773092
},
{
home: 6,
away: 0,
value: 0.012806909587366471
},
{
home: 6,
away: 1,
value: 0.030713983064227724
},
{
home: 6,
away: 2,
value: 0.0369671174487187
},
{
home: 6,
away: 3,
value: 0.029756524980091948
},
{
home: 6,
away: 4,
value: 0.018012700795413502
},
{
home: 6,
away: 5,
value: 0.008742842144856435
},
{
home: 6,
away: 6,
value: 0.00354304640928744
}
];
let c = matrix.reduce((acc, curr) => {
return acc += (curr.home > 0 && curr.away < curr.home) ? curr.value : 0;
}, 0);
console.log(c);
Upvotes: 2