I know how to remove null values from a single array using filters:
y = [7, 8, 9, null, null, 3, 4, null, 1] y.filter(Number) // [7, 8, 9, 3, 4, 1]
However, I’d also like to remove all those of an associated array whilst preserving the order of elements in both arrays.
Say I have,
x = [42, 60, 70, 100, 200, 400, 500, 900, 1000] y = [7, 8, 9, null, null, 3, 4, null, 1]
where an element of x is associated with y, i.e., if y[94] is null (which should be removed), x[94] should be removed too.
The end result should be:
x = [42, 60, 70, 400, 500, 1000] y = [7, 8, 9, 3, 4, 1]
I’ve tried finding what elements are null and then manually looping through them to remove the nulls, but I’d like a more elegant solution.
Cheers!
Advertisement
Answer
You can simply filter()
the arrays against each other by index as provided as the second parameter in the callback.
const x = [42, 60, 70, 100, 200, 400, 500, 900, 1000] const y = [7, 8, 9, null, null, 3, 4, null, 1] const xFiltered = x.filter((n, i) => n !== null && y[i] !== null); const yFiltered = y.filter((n, i) => n !== null && x[i] !== null); console.log(...xFiltered) console.log(...yFiltered)