Try something like this
// check SolarCurrentBids is an array
if (Array.isArray(SolarCurrentBids)) {
msg.payload = SolarCurrentBids.reduce(accumulatePrice, {sum: 0, count: 0})
} else {
// not an array so ignore it
msg = null
}
return msg;
function accumulatePrice(accumulator, item) {
accumulator.sum += item.SolarSalePrice
accumulator.count += 1
return accumulator
}
Example flow:
[{"id":"036757c5864ddad1","type":"inject","z":"bdd7be38.d3b55","name":"Sample data","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"[{\"SolarSalePrice\":10,\"Time\":\"11:01\"},{\"SolarSalePrice\":15,\"Time\":\"11:02\"},{\"SolarSalePrice\":20,\"Time\":\"11:03\"}]","payloadType":"json","x":140,"y":1960,"wires":[["375d8bfa152df267"]]},{"id":"0d3a0d62a22f73f0","type":"debug","z":"bdd7be38.d3b55","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":610,"y":1960,"wires":[]},{"id":"375d8bfa152df267","type":"function","z":"bdd7be38.d3b55","name":"Calc total price and count","func":"const SolarCurrentBids = msg.payload\n// check it is an array\nif (Array.isArray(SolarCurrentBids)) {\n msg.payload = SolarCurrentBids.reduce(accumulatePrice, {sum: 0, count: 0})\n} else {\n // not an array so ignore it\n msg = null\n}\nreturn msg;\n\nfunction accumulatePrice(accumulator, item) {\n accumulator.sum += item.SolarSalePrice\n accumulator.count += 1\n return accumulator\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":370,"y":1960,"wires":[["0d3a0d62a22f73f0"]]}]