mrhm-dev/full-stack-army

Lecture 6 - JavaScript Array and Object Deep Dive (Time: 2:03:56)

Murad-Hasan opened this issue · 2 comments

In this lecture, Nayem vai with an array like
const number = [1,2,3,4,NaN,false,'',5,7,8]
For converting an array to a truthy string and making a custom array with string concatenation like
[ 1, 2, 3, 4, 5, 7, 8 ]
The following code is

const truthyValue = number.reduce((acc,cur, index) => {
    if (index === 0) acc += '[ '
    if (cur){
        acc += cur.toString() + (`${index < number.length - 1 ? ', ' : ''}`)
    }
    if (index === number.length - 1 ) acc+=' ]'
    return acc;
}, '')

But when I am going to use another array-like

const number = [1,2,3,4,NaN,false,'']

For this, why is the code not working?
Maybe, One reason is that the array doesn't end with a number.
Have anyone any idea about this?

const number = [1,2,3,4,NaN,false,''];
const truthyValue = number.reduce((acc,cur, index) => {
if (index === 0) acc += '[ ';
if (cur){
acc += cur.toString() + (${index < number.length - 1 ? ', ' : ''});
}
if (cur && !number.slice(index+1).some(Boolean)) acc+=' ]';
return acc;
}, '');

console.log(truthyValue); // Output: [ 1, 2, 3, 4 ]

Try this algorithm

const arr = [1, 2, 3, 4, NaN, false, ""];

let i, j = 0;
for (i = 0; i < arr.length; i++) {
if (typeof arr[i] === "number" && !isNaN(arr[i])) {
arr[j++] = arr[i];
}
}
arr.length -= i - j;