Weird question if/else one line without else?

In this
lesson I decided to use a one line if/else statement and since I don’t need anything on the else side I had to “waste” an action somehow is there a better way to do it?


function filteredArray(arr, elem) {
let newArr = [];
// Only change code below this line
for (let i=0;i<arr.length;i++){
  arr[i].indexOf(elem) < 0  ?  newArr.push(arr[i]): arr=arr;
    
   
}
// Only change code above this line
return newArr;
}

console.log(filteredArray([[3, 2, 3], [1, 6, 3], [3, 13, 26], [19, 3, 9]], 3));

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0.

Challenge: Iterate Through All an Array’s Items Using For Loops

Link to the challenge:

If you have to pull shenanigans to make a ternary work, you probably don’t want a ternary.

1 Like

This post on StackOverflow has a good answer to this. In short, this isn’t the ideal use case for the ternary operator. It would probably be better to just use a regular if statement.

if (arr[i].indexOf(elem) < 0) {
    newArr.push(arr[i])
    }

If you really want to do it this way, I think you can just replace the arr=arr with null.

2 Likes