这是正常的:
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));
但如果我将return ''
或return null
放入else块中,我总是会为空,为什么会这样?
答案 0 :(得分:18)
您没有正确使用arrayFirst
。 arrayFirst
需要一个返回true
或false
的函数,评估每个项目。返回函数返回true
的第一个项目。以下是它的外观:
self.getById = function(id) {
return ko.utils.arrayFirst(self.PostArray(), function(item) {
return item.postId === id;
}) || 'not found';
};
如果'not found'
是假的,则基本上会返回item
(在这种情况下最有可能是null
)。
有关KnockoutJS中各种实用程序功能的更多信息,请参阅this article。