Skip to content

Instantly share code, notes, and snippets.

@eday69
Created June 15, 2018 18:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eday69/18e9d86173ed7c23dec3f67fdb515b50 to your computer and use it in GitHub Desktop.
Save eday69/18e9d86173ed7c23dec3f67fdb515b50 to your computer and use it in GitHub Desktop.
freeCodeCamp Intermediate Algorithm Scripting: Everything Be True
// Check if the predicate (second argument) is truthy on all
// elements of a collection (first argument).
// In other words, you are given an array collection of objects.
// The predicate pre will be an object property and you need to
// return true if its value is truthy. Otherwise, return false.
// In JavaScript, truthy values are values that translate to true
// when evaluated in a Boolean context.
// Remember, you can access object properties through either dot
// notation or [] notation.
function truthCheck(collection, pre) {
// Is everyone being true?
return collection.reduce((status, person) =>
(status && person.hasOwnProperty(pre) && !!person[pre]),
true);
}
truthCheck([{"user": "Tinky-Winky", "sex": "male"},
{"user": "Dipsy", "sex": "male"},
{"user": "Laa-Laa", "sex": "female"},
{"user": "Po", "sex": "female"}], "sex"); // true.
truthCheck([{"user": "Tinky-Winky", "sex": "male"},
{"user": "Dipsy"}, {"user": "Laa-Laa", "sex": "female"},
{"user": "Po", "sex": "female"}], "sex"); // false.
truthCheck([{"user": "Tinky-Winky", "sex": "male", "age": 0},
{"user": "Dipsy", "sex": "male", "age": 3},
{"user": "Laa-Laa", "sex": "female", "age": 5},
{"user": "Po", "sex": "female", "age": 4}], "age"); // false.
truthCheck([{"name": "Pete", "onBoat": true},
{"name": "Repeat", "onBoat": true},
{"name": "FastFoward", "onBoat": null}], "onBoat"); // false
truthCheck([{"name": "Pete", "onBoat": true},
{"name": "Repeat", "onBoat": true, "alias": "Repete"},
{"name": "FastFoward", "onBoat": true}], "onBoat"); // true
truthCheck([{"single": "yes"}], "single"); // true
truthCheck([{"single": ""}, {"single": "double"}], "single"); // false
truthCheck([{"single": "double"}, {"single": undefined}], "single"); // false
truthCheck([{"single": "double"}, {"single": NaN}], "single"); // false
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment