Did you know it is valid JavaScript to use conditional operators inside bracket notation to access object properties? For whatever reason, I have only just now realized this.
In other words, this is a perfectly valid fragment:
var obj = { valid: [], invalid: [] }; items.forEach(function (item) { obj[item.isValid() ? "valid" : "invalid"].push(item); });
The conditional operator, which takes the form condition ? ifTrue : ifFalse
, is a shorthand version of an if statement. In this case, it results in the name of the object property that I wish to access.
I am yet undecided on whether this is more or less readable than the verbose version:
items.forEach(function (item) { if (item.isValid()) { obj.valid.push(item); } else { obj.invalid.push(item); } });
Perhaps I will look back on this post in a few months and marvel at how obvious it all seems in hindsight. In the meantime, it is nice that I am still learning new things about JavaScript.
No comments:
Post a Comment