JavaScript - Functional Programming

Question Click to View Answer

Write the $$$.map() function so the result variable is assigned to the array [4, 8, 12].

result = $$$.map([2, 4, 6], function(num) {
  return num * 2;
});
console.log(result);
$$$ = {
  map: function(arr, callback) {
    result = [];
    arr.forEach(function (e) {
      result.push(callback(e));
    });
    return result;
  }
}

Write the $$$.find() function so the result variable is assigned to the string "cat".

arr = ['ant', 'cat', 'dog']
result = $$$.find(arr, function(str) {
  return str[0] === "c";
});
console.log(result);
$$$ = {
  find: function (arr, callback) {
    for (var i = 0; i < arr.length; i++) {
      var e = arr[i];
      if (callback(e)) {return e};
    }
  }
}

Write the $$$.select() function so the result variable is assigned to the array [5, 7, 9].

arr = [5, 6, 7, 8, 9];
result = $$$.select(arr, function(num) {
  return num % 2 === 1;
});
console.log(result);
$$$ = {
  select: function(arr, callback) {
    result = [];
    arr.forEach(function (num) {
      if (callback(num)) {
        result.push(num);
      }
    });
    return result;
  }
}

Write the $$$.reject() function so the result variable is assigned to the array 'happy', 'joy'.

arr = ['happy', 'snakes', 'joy', 'slippers'];
result = $$$.reject(arr, function (word) {
  var last_letter = word[word.length - 1];
  return last_letter === "s";
});
console.log(result);
$$$ = {
  reject: function (arr, callback) {
    result = [];
    arr.forEach(function(e) {
      if (!callback(e)) {
        result.push(e);
      }
    });
    return result;
  }
}

Write a function that satisfies the following console.log assertions.

var callback = function (num) {
  return num % 2 === 0
}

console.log($$$.all([1, 3, 4], callback) === false)
console.log($$$.all([2, 6, 4], callback) === true)
$$$ = {
  all: function (arr, callback) {
    for (var i = 0, l = arr.length; i < l; i ++) {
      if (!callback(arr[i])) {
        return false;
      }
    }
    return true;
  }
}

Write a function that satisfies the following console.log assertions.

var callback = function (num) {
  return num % 2 === 0
}

console.log($$$.any([1, 3, 4], callback) === true)
console.log($$$.any([1, 11, 111], callback) === false)
$$$ = {
  any: function (arr, callback) {
    for (var i = 0, l = arr.length; i < l; i ++) {
      if (callback(arr[i])) {
        return true;
      }
    }
    return false;
  }
}

Write the $$$.inject() function so the result variable is assigned to the array [1, 4, 9, 16].

var callback = function (num) {
  return num * num;
}

var arr = [1, 2, 3, 4]
result = $$$.inject(arr, [], callback)
console.log(result)
$$$ = {
  inject: function (arr, memo, callback) {
    arr.forEach(function (e) {
      memo.push(
        callback(e)
      )
    })
    return memo;
  }
}