freeCodeCamp/guide/english/certifications/javascript-algorithms-and-d.../intermediate-algorithm-scri.../everything-be-true/index.md

7.3 KiB

title
Everything Be True

:triangular_flag_on_post: Remember to use Read-Search-Ask if you get stuck. Try to pair program :busts_in_silhouette: and write your own code :pencil:

:checkered_flag: Problem Explanation:

The program needs to check if the second argument is a truthy element, and it must check this for each object in the first argument.

:speech_balloon: Hint: 1

Remember to iterate through the first argument to check each object.

try to solve the problem now

:speech_balloon: Hint: 2

Only if all of them are truth will we return true, so make sure all of them check.

try to solve the problem now

:speech_balloon: Hint: 3

try to solve the problem now

You could use loops or callbacks functions, there are multiple ways to solve this problem.

Spoiler Alert!

warning sign

Solutions ahead!

:beginner: Basic Code Solution:

Using for-in loop & hasOwnProperty

function truthCheck(collection, pre) {
  // Create a counter to check how many are true.
  var counter = 0;
  // Check for each object
  for (var c in collection) {
    // If it is has property and value is truthy
    if (collection[c].hasOwnProperty(pre) && Boolean(collection[c][pre])) {
      counter++;
    }
  }
  // Outside the loop, check to see if we got true for all of them and return true or false
  return counter == collection.length;
}

// test here
truthCheck([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}], "sex");

:rocket: Run Code

Code Explanation:

  • First I create a counter to check how many cases are actually true.
  • Then check for each object if the value is truthy
  • Outside the loop, I check to see if the counter variable has the same value as the length of collection, if true then return true, otherwise, return false

:sunflower: Intermediate Code Solution:

Using Array.every()

function truthCheck(collection, pre) {
  return collection.every(function (element) {
    return element.hasOwnProperty(pre) && Boolean(element[pre]);
  });
}

// test here
truthCheck([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}], "sex");

:rocket: Run Code

Code Explanation:

  • Uses the native "every" method to test whether all elements in the array pass the test.
  • This link will help Array.prototype.every()

:rotating_light: Advanced Code Solution:

function truthCheck(collection, pre) {
  // Is everyone being true?
  return collection.every(obj => obj[pre]);
}

truthCheck([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}], "sex");

:rocket: Run Code

Code Explanation:

  • For every object in the collection array, check the truthiness of object's property passed in pre parameter
  • Array#every method internally checks if the value returned from the callback is truthy.
  • Return true if it passes for every object. Otherwise, return false.

:clipboard: NOTES FOR CONTRIBUTIONS:

  • :warning: DO NOT add solutions that are similar to any existing solutions. If you think it is similar but better, then try to merge (or replace) the existing similar solution.
  • Add an explanation of your solution.
  • Categorize the solution in one of the following categories — Basic, Intermediate and Advanced. :traffic_light:
  • Please add your username only if you have added any relevant main contents. (:warning: DO NOT remove any existing usernames)

See :point_right: Wiki Challenge Solution Template for reference.