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) {

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


You should really use a single if statement. Ternary operator is not meant to replace any if/else statement (especially since you don’t even need an else statement). Just keep it simple and readable.


If you really want to use the ternary operator, then you could do the following, but I do not believe it is more readable than the simple if statement.

newArr = newArr.concat(arr[i].indexOf(elem) < 0  ? [arr[i]]: [])

or maybe something a bit more readable:

  newArr = arr[i].indexOf(elem) < 0
   ? [ ...newArr, arr[i] ]
   : newArr;