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.
Hint: 1
Remember to iterate through the first argument to check each object.
Hint: 2
Only if all of them are truth will we return true, so make sure all of them check.
Hint: 3
You could use loops or callbacks functions, there are multiple ways to solve this problem.
Spoiler Alert!
Solutions ahead!
Code Solution using for-in loop & hasOwnProperty:
function every(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;
}
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
Code Solution using Array.every():
function every(collection, pre) {
return collection.every(function (element) {
return element.hasOwnProperty(pre) && Boolean(element[pre]);
});
}
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()
Code solution using Array.reduce:
function every(collection, pre) {
return collection.reduce(function(acc, next) {
if (next[pre]) {
return acc;
} else {
acc = false;
return acc;
}
},true);
Code Explanation:
- Set initial reduce value to true.
- Change it to false only when there is no key of a given name or it's falsy. Otherwise stick to the initial truthy value.
Credits:
If you found this page useful, you can give thanks by copying and pasting this on the main chat: thanks @Rafase282 @estevanmaito @HermanFassett for your help with Algorithm: Everything Be True
NOTE: Please add your username only if you have added any relevant main contents to the wiki page. (Please don't remove any existing usernames.)