# Change "null" to "0" in an array

**URL:** <https://discourse.nodered.org/t/change-null-to-0-in-an-array/91054>\
**Category:** General\
**Created:** [17 September 2024 20:14 UTC](https://discourse.nodered.org/t/change-null-to-0-in-an-array/91054 "2024-09-17T20:14:11Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Becker](https://avatars.discourse-cdn.com/v4/letter/b/c77e96/32.png) [@Becker](https://discourse.nodered.org/u/Becker)\
**Post date:** [17 September 2024 20:14 UTC](https://discourse.nodered.org/t/change-null-to-0-in-an-array/91054/1 "2024-09-17T20:14:11Z")

</div>

Hi, I´ve an big array like this:

```auto
[{"from":"2024-09-16T22:00:00.000+02:00","cost":0.0014874048,"unitPrice":0.2479008,"consumption":0.006},{"from":"2024-09-16T23:00:00.000+02:00","cost":0.001255688,"unitPrice":0.2511376,"consumption":0.005},{"from":"2024-09-17T00:00:00.000+02:00","cost":0.001023638,"unitPrice":0.2559095,"consumption":0.004},{"from":"2024-09-17T01:00:00.000+02:00","cost":0.0007561617,"unitPrice":0.2520539,"consumption":0.003},{"from":"2024-09-17T02:00:00.000+02:00","cost":0.0009996952,"unitPrice":0.2499238,"consumption":0.004},{"from":"2024-09-17T03:00:00.000+02:00","cost":0.0007473795,"unitPrice":0.2491265,"consumption":0.003},{"from":"2024-09-17T04:00:00.000+02:00","cost":0.0007480935,"unitPrice":0.2493645,"consumption":0.003},{"from":"2024-09-17T05:00:00.000+02:00","cost":0.0010521028,"unitPrice":0.2630257,"consumption":0.004},{"from":"2024-09-17T06:00:00.000+02:00","cost":0.0014150885,"unitPrice":0.2830177,"consumption":0.005},{"from":"2024-09-17T07:00:00.000+02:00","cost":0.001881033,"unitPrice":0.3135055,"consumption":0.006},{"from":"2024-09-17T08:00:00.000+02:00","cost":0.0022243599,"unitPrice":0.3177657,"consumption":0.007},{"from":"2024-09-17T09:00:00.000+02:00","cost":0.0017023188,"unitPrice":0.2837198,"consumption":0.006},{"from":"2024-09-17T10:00:00.000+02:00","cost":0.0018828299,"unitPrice":0.2689757,"consumption":0.007},{"from":"2024-09-17T11:00:00.000+02:00","cost":0.001765127,"unitPrice":0.252161,"consumption":0.007},{"from":"2024-09-17T12:00:00.000+02:00","cost":0.0015770356,"unitPrice":0.2252908,"consumption":0.007},{"from":"2024-09-17T13:00:00.000+02:00","cost":0.0014267624,"unitPrice":0.2038232,"consumption":0.007},{"from":"2024-09-17T14:00:00.000+02:00","cost":0.000369257,"unitPrice":0.1846285,"consumption":0.002},{"from":"2024-09-17T15:00:00.000+02:00","cost":0.014076034,"unitPrice":0.2070005,"consumption":0.068},{"from":"2024-09-17T16:00:00.000+02:00","cost":0.024737244,"unitPrice":0.242522,"consumption":0.102},{"from":"2024-09-17T17:00:00.000+02:00","cost":0.005307638,"unitPrice":0.2653819,"consumption":0.02},{"from":"2024-09-17T18:00:00.000+02:00","cost":0,"unitPrice":0.288575,"consumption":0},{"from":"2024-09-17T19:00:00.000+02:00","cost":0.001559138,"unitPrice":0.3118276,"consumption":0.005},{"from":"2024-09-17T20:00:00.000+02:00","cost":0.001718955,"unitPrice":0.2864925,"consumption":0.006},{"from":"2024-09-17T21:00:00.000+02:00","cost":0.0010739988,"unitPrice":0.2684997,"consumption":0.004}]

```

visual:

 ![grafik](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/5/0/502d60baa8850f9e74664ad23bfe02e8fdd82bb0.png)

sometimes I get a "null" somewhere.

I want to replace each "null" by "0".

Is this possible?

greetings

---

<div class="post-metadata">

**Author:** ![marcus-j-davies](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/marcus-j-davies/32/103435_2.png) [@marcus-j-davies](https://discourse.nodered.org/u/marcus-j-davies)\
**Post date:** [17 September 2024 20:24 UTC](https://discourse.nodered.org/t/change-null-to-0-in-an-array/91054/2 "2024-09-17T20:24:42Z")

</div>

I think you can use the `map` function (I don't use it much, but getting more exposure to it latley)

```auto
// Function Node

const myArray = msg.payload;

const ToZero = myArray.map(el => {
  return {
    from: el.from,
    cost: el.cost ?? 0,
    unitPrice: el.unitPrice ?? 0,
    consumption: el.consumption ?? 0
  };
});
msg.payload = ToZero;
return msg;

```

I'm sure this can also be done using JSONata (Cough cough @E1cid 😉 )

---

<div class="post-metadata">

**Author:** ![E1cid](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/e1cid/32/77971_2.png) [@E1cid](https://discourse.nodered.org/u/E1cid)\
**Post date:** [17 September 2024 20:58 UTC](https://discourse.nodered.org/t/change-null-to-0-in-an-array/91054/3 "2024-09-17T20:58:27Z")

</div>

possibly the transform function

```auto
$$.payload ~> |$|
    { 
        "cost": $.cost = null ? 0,
        "unitPrice": $.unitPrice = null ? 0,
        "consumption": $.consumption = null ? 0
    }
|

```

---

<div class="post-metadata">

**Author:** ![bakman2](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bakman2/32/6207_2.png) [@bakman2](https://discourse.nodered.org/u/bakman2)\
**Post date:** [18 September 2024 05:04 UTC](https://discourse.nodered.org/t/change-null-to-0-in-an-array/91054/4 "2024-09-18T05:04:10Z")

</div>

or alternatively;

```auto
const input = msg.payload

const result = input.map(obj => {
    for (const key in obj) {
        if (obj[key] === null && key !== "from") {
            obj[key] = 0;
        }
    }
    return obj
})

msg.payload = result

```

---

<div class="post-metadata">

**Author:** ![Becker](https://avatars.discourse-cdn.com/v4/letter/b/c77e96/32.png) [@Becker](https://discourse.nodered.org/u/Becker)\
**Post date:** [18 September 2024 05:27 UTC](https://discourse.nodered.org/t/change-null-to-0-in-an-array/91054/5 "2024-09-18T05:27:47Z")

</div>

wow I'm speechless 🤩 👍

so many roads lead to Rome, i picked E1cid´s because it is the shortest solution.

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [18 September 2024 07:39 UTC](https://discourse.nodered.org/t/change-null-to-0-in-an-array/91054/6 "2024-09-18T07:39:36Z")

</div>

```js
for (const payload of msg.payload) {
    payload.cost ??= 0,
    payload.unitPrice ??= 0,
    payload.consumption ??= 0
}
return msg

```

My preference: Pure JS, faster, more readable & maintainable (as in there many more JS devs than JSONata devs)

PS: `??=` means if property is null(ish), set it to 0.  
See: [Nullish coalescing assignment (??=)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_assignment)

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [2 October 2024 07:40 UTC](https://discourse.nodered.org/t/change-null-to-0-in-an-array/91054/7 "2024-10-02T07:40:06Z")

</div>

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.
