问题
This works correctly:
self.getById = function(id) {
return ko.utils.arrayFirst(self.PostArray(), function(item) {
if (item.postId === id) {
return item;
}
else {
return 'not found';
}
});
};
console.log(self.PostArray().length);
console.log(self.getById(170));
But if I put return '' or return null in else block I always get null, why is that?
回答1:
You're not using arrayFirst correctly. arrayFirst expects a function that returns true or false, evaluating each item. The first item for which the function returns true is returned. Here's how it should look:
self.getById = function(id) {
return ko.utils.arrayFirst(self.PostArray(), function(item) {
return item.postId === id;
}) || 'not found';
};
Basically return 'not found' if item is falsey (null in this case most likely).
See this article for more information on the various utility functions in KnockoutJS.
来源:https://stackoverflow.com/questions/21222480/ko-utils-arrayfirst-always-returns-null-when-not-handling-else-block-with-non-em