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.
Remember to iterate through the first argument to check each object.
Only if all of them are truth will we return true, so make sure all of them check.
You could use loops or callbacks functions, there are multiple ways to solve this problem.
Solutions ahead!
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;
}
- 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
function every(collection, pre) {
return collection.every(function (element) {
return element.hasOwnProperty(pre) && Boolean(element[pre]);
});
}
- Uses the native "every" method to test whether all elements in the array pass the test.
- This link will help Array.prototype.every()
function every(collection, pre) {
return collection.reduce(function(acc, next) {
if (next[pre]) {
return acc;
} else {
acc = false;
return acc;
}
},true);
- 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.
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.)