Reputation: 445
im a JS newbie. Trying to figure out this problem below. I am stuck on the "if" statement and not sure exactly what to put in. Also im not sure if my "push" is setup right
// Define a function named `compact` that accepts an array and returns
// another array with all the falsey values removed from it. For example,
// if this array was passed in:
// [1, 4, 0, '', undefined, false, true, null, {mj: 'mj'}, 'Hello']
// the function would return this, as a result:
// [1, 4, true, {mj: 'mj'}, 'Hello']
var compact = function (array) {
var truthyValues = [];
for (var i = 0; i < array.length; i += 1) {
if () {
truthyValues.push[i];
}
}
return truthyValues;
};
Upvotes: 4
Views: 653
Reputation: 14671
if (typeof array[i] !== "undefined" && array[i] !== null) {// push to array // }
most of these other answers will not work for falsy and existy values. You'll need to define what you intend to be existy and write a helper function for that. you could use the one I provided as a start and then roll your own.
Upvotes: 1
Reputation: 7416
Just put the value you want to check is truthy in the if statement, since the if statement checks for truthiness.
if(array[i]){
truthyValues.push(array[i]);
}
Upvotes: 4
Reputation: 1972
I think you can just use:
if (array[i]) { truthyValues.push(array[i]); }
Values like null will trigger false.
Upvotes: 1
Reputation: 15397
You're close. Here's what the if
should be:
if (array[i]) {
truthyValues.push(array[i]);
}
Since you want to check for truthiness of each array element, just put array[i]
in the if
block. That gets the value of the array at i
, and will evaluate as true if that value is truthy.
Then push not i - the index into array - but array[i]
, so that the actual value is in truthyValues.
Upvotes: 4