ioBroker / ioBroker.javascript

Script engine for JavaScript and Blockly
MIT License
325 stars 120 forks source link

array.sort() Reihenfolge nicht korrekt/Order not correct #1531

Closed ETGermany closed 6 months ago

ETGermany commented 6 months ago

I'm sure that

Script type

JavaScript

The problem

Bei der Sortierung eines Arrays wird in diesem Beispiel 1 Wert falsch geordnet; siehe Wert 6.85, der müsste auf Position [0] im sortierten Array

SKRIPT: // Energy-Charts API: // https://api.energy-charts.info/price?bzn=DE-LU&start=2024-03-30T00%3A00%2B01%3A00&end=2024-03-30T23%3A45%2B01%3A00 var priceArray = [69.3, 58.16, 58.88, 58.95, 59.23, 65.05, 58.57, 47.79, 45.23, 43.38, 34.49, 23.21, 14.76, 6.85, 15.87, 34.2, 52.52, 77.75, 88.11, 83.53, 74.11, 71.47, 70.83, 65.74]; log(priceArray); log(priceArray.sort());

LOG:

11:31:14.809 info javascript.0 (105557) Start javascript script.js.common.ZUMTESTEN.ARRAY_SORT
11:31:14.820 info javascript.0 (105557) script.js.common.ZUMTESTEN.ARRAY_SORT: [ 69.3, 58.16, 58.88, 58.95, 59.23, 65.05, 58.57, 47.79, 45.23, 43.38, 34.49, 23.21, 14.76, 6.85, 15.87, 34.2, 52.52, 77.75, 88.11, 83.53, 74.11, 71.47, 70.83, 65.74 ]
11:31:14.820 info javascript.0 (105557) script.js.common.ZUMTESTEN.ARRAY_SORT: [ 14.76, 15.87, 23.21, 34.2, 34.49, 43.38, 45.23, 47.79, 52.52, 58.16, 58.57, 58.88, 58.95, 59.23, 6.85, 65.05, 65.74, 69.3, 70.83, 71.47, 74.11, 77.75, 83.53, 88.11 ]
11:31:14.821 info javascript.0 (105557) script.js.common.ZUMTESTEN.ARRAY_SORT: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions

iobroker.current.log (in debug mode!)

2024-03-30 11:31:14.775 - silly: javascript.0 (105557) Objects user redis pmessage */cfg.o.script.js.common.ZUMTESTEN.ARRAY_SORT:{"common":{"name":"ARRAY_SORT","expert":true,"engineType":"Javascript/js","engine":"system.adapter.javascript.0","source":"// Energy-Charts API: \r\n// https://api.energy-charts.info/price?bzn=DE-LU&start=2024-03-30T00%3A00%2B01%3A00&end=2024-03-30T23%3A45%2B01%3A00\r\n var priceArray = [69.3, 58.16, 58.88, 58.95, 59.23, 65.05, 58.57, 47.79, 45.23, 43.38, 34.49, 23.21, \r\n 14.76, 6.85, 15.87, 34.2, 52.52, 77.75, 88.11, 83.53, 74.11, 71.47, 70.83, 65.74];\r\n log(priceArray);\r\n log(priceArray.sort());","debug":false,"verbose":false,"enabled":true},"type":"script","from":"system.adapter.admin.0","user":"system.user.admin","ts":1711794674771,"_id":"script.js.common.ZUMTESTEN.ARRAY_SORT"}

2024-03-30 11:31:14.794 - silly: javascript.0 (105557) States user redis pmessage /javascript.0.scriptEnabled.common.ZUMTESTEN.ARRAY_SORT:{"val":true,"ack":true,"ts":1711794674790,"q":0,"from":"system.adapter.javascript.0","user":"system.user.admin","lc":1711794674790} 2024-03-30 11:31:14.805 - silly: javascript.0 (105557) States user redis pmessage /javascript.0.scriptEnabled.common.ZUMTESTEN.ARRAY_SORT:{"val":true,"ack":true,"ts":1711794674801,"q":0,"from":"system.adapter.javascript.0","user":"system.user.admin","lc":1711794674790} 2024-03-30 11:31:14.809 - info: javascript.0 (105557) Start javascript script.js.common.ZUMTESTEN.ARRAY_SORT 2024-03-30 11:31:14.820 - info: javascript.0 (105557) script.js.common.ZUMTESTEN.ARRAY_SORT: [ 69.3, 58.16, 58.88, 58.95, 59.23, 65.05, 58.57, 47.79, 45.23, 43.38, 34.49, 23.21, 14.76, 6.85, 15.87, 34.2, 52.52, 77.75, 88.11, 83.53, 74.11, 71.47, 70.83, 65.74 ] 2024-03-30 11:31:14.820 - info: javascript.0 (105557) script.js.common.ZUMTESTEN.ARRAY_SORT: [ 14.76, 15.87, 23.21, 34.2, 34.49, 43.38, 45.23, 47.79, 52.52, 58.16, 58.57, 58.88, 58.95, 59.23, 6.85, 65.05, 65.74, 69.3, 70.83, 71.47, 74.11, 77.75, 83.53, 88.11 ] 2024-03-30 11:31:14.821 - info: javascript.0 (105557) script.js.common.ZUMTESTEN.ARRAY_SORT: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 2024-03-30 11:31:14.869 - silly: javascript.0 (105557) States user redis pmessage /javascript.0.scriptEnabled.common.ZUMTESTEN.ARRAY_SORT:{"val":true,"ack":true,"ts":1711794674866,"q":0,"from":"system.adapter.javascript.0","user":"system.user.admin","lc":1711794674790} 2024-03-30 11:31:14.875 - silly: javascript.0 (105557) States user redis pmessage /javascript.0.scriptProblem.common.ZUMTESTEN.ARRAY_SORT:{"val":false,"ack":true,"ts":1711794674871,"q":0,"from":"system.adapter.javascript.0","user":"system.user.admin","lc":1711792700090,"expire":true} 2024-03-30 11:31:16.906 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.mqtt.0.alive:{"val":true,"ack":true,"ts":1711794676903,"q":0,"from":"system.adapter.mqtt.0","lc":1709899241473,"expire":true} 2024-03-30 11:31:16.907 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.mqtt.0.connected:{"val":true,"ack":true,"ts":1711794676903,"q":0,"from":"system.adapter.mqtt.0","lc":1709899241473,"expire":true} 2024-03-30 11:31:16.911 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.mqtt.0.memRss:{"val":53.17,"ack":true,"ts":1711794676904,"q":0,"from":"system.adapter.mqtt.0","lc":1711794676904,"expire":true} 2024-03-30 11:31:16.913 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.mqtt.0.memHeapTotal:{"val":25.07,"ack":true,"ts":1711794676904,"q":0,"from":"system.adapter.mqtt.0","lc":1711790086591,"expire":true} 2024-03-30 11:31:16.914 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.mqtt.0.memHeapUsed:{"val":21.87,"ack":true,"ts":1711794676904,"q":0,"from":"system.adapter.mqtt.0","lc":1711794676904,"expire":true} 2024-03-30 11:31:16.915 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.mqtt.0.eventLoopLag:{"val":2,"ack":true,"ts":1711794676904,"q":0,"from":"system.adapter.mqtt.0","lc":1711794616901,"expire":true} 2024-03-30 11:31:16.915 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.mqtt.0.uptime:{"val":1895437,"ack":true,"ts":1711794676904,"q":0,"from":"system.adapter.mqtt.0","lc":1711794676904,"expire":true} 2024-03-30 11:31:16.929 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.mqtt.0.inputCount:{"val":0,"ack":true,"ts":1711794676905,"q":0,"from":"system.adapter.mqtt.0","lc":1711794511893,"expire":true} 2024-03-30 11:31:16.930 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.mqtt.0.outputCount:{"val":11,"ack":true,"ts":1711794676908,"q":0,"from":"system.adapter.mqtt.0","lc":1709899271369,"expire":true} 2024-03-30 11:31:16.931 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.mqtt.0.cpu:{"val":0.07,"ack":true,"ts":1711794676923,"q":0,"from":"system.adapter.mqtt.0","lc":1711794661914,"expire":true} 2024-03-30 11:31:16.933 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.mqtt.0.cputime:{"val":2071.7,"ack":true,"ts":1711794676923,"q":0,"from":"system.adapter.mqtt.0","lc":1711794676923,"expire":true} 2024-03-30 11:31:17.196 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.admin.0.alive:{"val":true,"ack":true,"ts":1711794677194,"q":0,"from":"system.adapter.admin.0","lc":1709898756522,"expire":true} 2024-03-30 11:31:17.199 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.admin.0.connected:{"val":true,"ack":true,"ts":1711794677194,"q":0,"from":"system.adapter.admin.0","lc":1709898756523,"expire":true} 2024-03-30 11:31:17.201 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.admin.0.memRss:{"val":258.18,"ack":true,"ts":1711794677194,"q":0,"from":"system.adapter.admin.0","lc":1711794677194,"expire":true} 2024-03-30 11:31:17.202 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.admin.0.memHeapTotal:{"val":146.54,"ack":true,"ts":1711794677194,"q":0,"from":"system.adapter.admin.0","lc":1711794677194,"expire":true} 2024-03-30 11:31:17.203 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.admin.0.memHeapUsed:{"val":112.65,"ack":true,"ts":1711794677194,"q":0,"from":"system.adapter.admin.0","lc":1711794677194,"expire":true} 2024-03-30 11:31:17.205 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.admin.0.eventLoopLag:{"val":37,"ack":true,"ts":1711794677194,"q":0,"from":"system.adapter.admin.0","lc":1711794677194,"expire":true} 2024-03-30 11:31:17.206 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.admin.0.uptime:{"val":1895922,"ack":true,"ts":1711794677194,"q":0,"from":"system.adapter.admin.0","lc":1711794677194,"expire":true} 2024-03-30 11:31:17.207 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.admin.0.inputCount:{"val":154,"ack":true,"ts":1711794677195,"q":0,"from":"system.adapter.admin.0","lc":1711794677195,"expire":true} 2024-03-30 11:31:17.209 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.admin.0.outputCount:{"val":13,"ack":true,"ts":1711794677195,"q":0,"from":"system.adapter.admin.0","lc":1711794677195,"expire":true} 2024-03-30 11:31:17.211 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.admin.0.cpu:{"val":23.87,"ack":true,"ts":1711794677195,"q":0,"from":"system.adapter.admin.0","lc":1711794677195,"expire":true} 2024-03-30 11:31:17.212 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.admin.0.cputime:{"val":2291.87,"ack":true,"ts":1711794677195,"q":0,"from":"system.adapter.admin.0","lc":1711794677195,"expire":true} 2024-03-30 11:31:20.458 - silly: javascript.0 (105557) States user redis pmessage /system.host.n51-ubunbck.alive:{"val":true,"ack":true,"ts":1711794680452,"q":0,"from":"system.host.n51-ubunbck","lc":1709898703265,"expire":true} 2024-03-30 11:31:20.461 - silly: javascript.0 (105557) States user redis pmessage /system.host.n51-ubunbck.memRss:{"val":393.38,"ack":true,"ts":1711794680452,"q":0,"from":"system.host.n51-ubunbck","lc":1711794680452} 2024-03-30 11:31:20.468 - silly: javascript.0 (105557) States user redis pmessage /system.host.n51-ubunbck.memHeapTotal:{"val":238.9,"ack":true,"ts":1711794680452,"q":0,"from":"system.host.n51-ubunbck","lc":1711794680452} 2024-03-30 11:31:20.470 - silly: javascript.0 (105557) States user redis pmessage /system.host.n51-ubunbck.memHeapUsed:{"val":205.3,"ack":true,"ts":1711794680452,"q":0,"from":"system.host.n51-ubunbck","lc":1711794680452} 2024-03-30 11:31:20.471 - silly: javascript.0 (105557) States user redis pmessage /system.host.n51-ubunbck.load:{"val":0.46,"ack":true,"ts":1711794680453,"q":0,"from":"system.host.n51-ubunbck","lc":1711794680453} 2024-03-30 11:31:20.472 - silly: javascript.0 (105557) States user redis pmessage /system.host.n51-ubunbck.uptime:{"val":1895980,"ack":true,"ts":1711794680453,"q":0,"from":"system.host.n51-ubunbck","lc":1711794680453} 2024-03-30 11:31:20.473 - silly: javascript.0 (105557) States user redis pmessage /system.host.n51-ubunbck.mem:{"val":52,"ack":true,"ts":1711794680453,"q":0,"from":"system.host.n51-ubunbck","lc":1711794680453} 2024-03-30 11:31:20.474 - silly: javascript.0 (105557) States user redis pmessage /system.host.n51-ubunbck.freemem:{"val":1424,"ack":true,"ts":1711794680453,"q":0,"from":"system.host.n51-ubunbck","lc":1711794680453} 2024-03-30 11:31:20.481 - silly: javascript.0 (105557) States user redis pmessage /system.host.n51-ubunbck.memAvailable:{"val":1493,"ack":true,"ts":1711794680453,"q":0,"from":"system.host.n51-ubunbck","lc":1711794680453} 2024-03-30 11:31:20.482 - silly: javascript.0 (105557) States user redis pmessage /system.host.n51-ubunbck.inputCount:{"val":12,"ack":true,"ts":1711794680453,"q":0,"from":"system.host.n51-ubunbck","lc":1711794680453} 2024-03-30 11:31:20.482 - silly: javascript.0 (105557) States user redis pmessage /system.host.n51-ubunbck.outputCount:{"val":13,"ack":true,"ts":1711794680454,"q":0,"from":"system.host.n51-ubunbck","lc":1711794560449} 2024-03-30 11:31:20.483 - silly: javascript.0 (105557) States user redis pmessage /system.host.n51-ubunbck.eventLoopLag:{"val":4,"ack":true,"ts":1711794680456,"q":0,"from":"system.host.n51-ubunbck","lc":1711794680456} 2024-03-30 11:31:20.483 - silly: javascript.0 (105557) States user redis pmessage /system.host.n51-ubunbck.compactgroupProcesses:{"val":0,"ack":true,"ts":1711794680456,"q":0,"from":"system.host.n51-ubunbck","lc":1706806767068} 2024-03-30 11:31:20.483 - silly: javascript.0 (105557) States user redis pmessage /system.host.n51-ubunbck.instancesAsProcess:{"val":7,"ack":true,"ts":1711794680456,"q":0,"from":"system.host.n51-ubunbck","lc":1709899288421} 2024-03-30 11:31:20.483 - silly: javascript.0 (105557) States user redis pmessage /system.host.n51-ubunbck.instancesAsCompact:{"val":0,"ack":true,"ts":1711794680456,"q":0,"from":"system.host.n51-ubunbck","lc":1706806767068} 2024-03-30 11:31:20.484 - silly: javascript.0 (105557) States user redis pmessage /system.host.n51-ubunbck.cpu:{"val":17.67,"ack":true,"ts":1711794680480,"q":0,"from":"system.host.n51-ubunbck","lc":1711794680480} 2024-03-30 11:31:20.484 - silly: javascript.0 (105557) States user redis pmessage /system.host.n51-ubunbck.cputime:{"val":20817.32,"ack":true,"ts":1711794680480,"q":0,"from":"system.host.n51-ubunbck","lc":1711794680480} 2024-03-30 11:31:20.953 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.web.0.alive:{"val":true,"ack":true,"ts":1711794680950,"q":0,"from":"system.adapter.web.0","lc":1709899317603,"expire":true} 2024-03-30 11:31:20.955 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.web.0.connected:{"val":true,"ack":true,"ts":1711794680950,"q":0,"from":"system.adapter.web.0","lc":1709899317604,"expire":true} 2024-03-30 11:31:20.956 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.web.0.memRss:{"val":82.43,"ack":true,"ts":1711794680950,"q":0,"from":"system.adapter.web.0","lc":1711794665998,"expire":true} 2024-03-30 11:31:20.957 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.web.0.memHeapTotal:{"val":27.64,"ack":true,"ts":1711794680951,"q":0,"from":"system.adapter.web.0","lc":1711790180604,"expire":true} 2024-03-30 11:31:20.960 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.web.0.memHeapUsed:{"val":26.1,"ack":true,"ts":1711794680951,"q":0,"from":"system.adapter.web.0","lc":1711794680951,"expire":true} 2024-03-30 11:31:20.962 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.web.0.eventLoopLag:{"val":2,"ack":true,"ts":1711794680951,"q":0,"from":"system.adapter.web.0","lc":1711794680951,"expire":true} 2024-03-30 11:31:20.963 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.web.0.uptime:{"val":1895365,"ack":true,"ts":1711794680951,"q":0,"from":"system.adapter.web.0","lc":1711794680951,"expire":true} 2024-03-30 11:31:20.970 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.web.0.inputCount:{"val":0,"ack":true,"ts":1711794680951,"q":0,"from":"system.adapter.web.0","lc":1711794515943,"expire":true} 2024-03-30 11:31:20.972 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.web.0.outputCount:{"val":11,"ack":true,"ts":1711794680951,"q":0,"from":"system.adapter.web.0","lc":1711712279504,"expire":true} 2024-03-30 11:31:20.980 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.web.0.cpu:{"val":0.07,"ack":true,"ts":1711794680962,"q":0,"from":"system.adapter.web.0","lc":1711794650951,"expire":true} 2024-03-30 11:31:20.982 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.web.0.cputime:{"val":1888.38,"ack":true,"ts":1711794680963,"q":0,"from":"system.adapter.web.0","lc":1711794680963,"expire":true} 2024-03-30 11:31:25.304 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.vis-inventwo.0.alive:{"val":true,"ack":true,"ts":1711794685299,"q":0,"from":"system.adapter.vis-inventwo.0","lc":1709898733743,"expire":true} 2024-03-30 11:31:25.305 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.vis-inventwo.0.connected:{"val":true,"ack":true,"ts":1711794685300,"q":0,"from":"system.adapter.vis-inventwo.0","lc":1709898733744,"expire":true} 2024-03-30 11:31:25.309 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.vis-inventwo.0.memRss:{"val":47.69,"ack":true,"ts":1711794685300,"q":0,"from":"system.adapter.vis-inventwo.0","lc":1711794685300,"expire":true} 2024-03-30 11:31:25.310 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.vis-inventwo.0.memHeapTotal:{"val":20.07,"ack":true,"ts":1711794685300,"q":0,"from":"system.adapter.vis-inventwo.0","lc":1711787229694,"expire":true} 2024-03-30 11:31:25.312 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.vis-inventwo.0.memHeapUsed:{"val":18.27,"ack":true,"ts":1711794685300,"q":0,"from":"system.adapter.vis-inventwo.0","lc":1711794685300,"expire":true} 2024-03-30 11:31:25.313 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.vis-inventwo.0.eventLoopLag:{"val":2,"ack":true,"ts":1711794685300,"q":0,"from":"system.adapter.vis-inventwo.0","lc":1711794550290,"expire":true} 2024-03-30 11:31:25.314 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.vis-inventwo.0.uptime:{"val":1895953,"ack":true,"ts":1711794685301,"q":0,"from":"system.adapter.vis-inventwo.0","lc":1711794685301,"expire":true} 2024-03-30 11:31:25.314 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.vis-inventwo.0.inputCount:{"val":0,"ack":true,"ts":1711794685301,"q":0,"from":"system.adapter.vis-inventwo.0","lc":1711794505284,"expire":true} 2024-03-30 11:31:25.315 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.vis-inventwo.0.outputCount:{"val":11,"ack":true,"ts":1711794685301,"q":0,"from":"system.adapter.vis-inventwo.0","lc":1709898763736,"expire":true} 2024-03-30 11:31:25.353 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.vis-inventwo.0.cpu:{"val":0.07,"ack":true,"ts":1711794685351,"q":0,"from":"system.adapter.vis-inventwo.0","lc":1711794685351,"expire":true} 2024-03-30 11:31:25.355 - silly: javascript.0 (105557) States user redis pmessage /system.adapter.vis-inventwo.0.cputime:{"val":1829.61,"ack":true,"ts":1711794685351,"q":0,"from":"system.adapter.vis-inventwo.0","lc":1711794685351,"expire":true} 2024-03-30 11:31:26.476 - silly: javascript.0 (105557) Objects user redis pmessage /cfg.o.script.js.common.ZUMTESTEN.ARRAY_SORT:{"common":{"name":"ARRAY_SORT","expert":true,"engineType":"Javascript/js","engine":"system.adapter.javascript.0","source":"// Energy-Charts API: \r\n// https://api.energy-charts.info/price?bzn=DE-LU&start=2024-03-30T00%3A00%2B01%3A00&end=2024-03-30T23%3A45%2B01%3A00\r\n var priceArray = [69.3, 58.16, 58.88, 58.95, 59.23, 65.05, 58.57, 47.79, 45.23, 43.38, 34.49, 23.21, \r\n 14.76, 6.85, 15.87, 34.2, 52.52, 77.75, 88.11, 83.53, 74.11, 71.47, 70.83, 65.74];\r\n log(priceArray);\r\n log(priceArray.sort());","debug":false,"verbose":false,"enabled":false},"type":"script","from":"system.adapter.admin.0","user":"system.user.admin","ts":1711794686472,"_id":"script.js.common.ZUMTESTEN.ARRAY_SORT"} 2024-03-30 11:31:26.484 - info: javascript.0 (105557) Stop script script.js.common.ZUMTESTEN.ARRAY_SORT

Version of nodejs

20.11.1

Version of ioBroker js-controller

5.0.19

Version of adapter

7.11.1

mcm1957 commented 6 months ago

Per default sort sorts strings after converting all elements to strings so 80 comes before 9. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort?retiredLocale=de

Sort does no numerical sort unless you use a compare function.

So in my oppinion sorting is correct according to spec.

ETGermany commented 6 months ago

In dem Fall - verstanden. Interessante Doku. Also kein Bug, somit kannst du schließen. Danke