This is not a dup of JSlint: unexpected 'for' , please do not mark it as such:
There is no native for loop for looping through an object or object literal ( I know there is a .forEach
for arrays ).
Why does jslint suggest not using for loops? How do you loop through an object that does not have Array.forEach()
or Array.some()
or similar?
But the bigger more important question, is why is this suggestion made?
Obviously I could use Object.keys()
and then forEach()
but this seems like a longer way to do it.
Originating Code
// on a truthy match returns true and breaks from loop
Pub.someKey = function (obj, func, con) {
var key;
if (!Pub.isFunction(func)) {
return false;
}
for (key in obj) {
if (obj.hasOwnProperty(key)) {
if (func.call(con, obj[key], key, obj)) {
return true;
}
}
}
return false;
};
Pub.forSomeKey = Pub.someKey;