问题描述
这可以正常工作:
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块中,我总是得到null,那为什么呢?
But if I put return ''
or return null
in else block I always get null, why is that?
推荐答案
您没有正确使用arrayFirst
. arrayFirst
需要一个返回true
或false
的函数,对每个项目进行评估.返回该函数为其返回true
的第一项.这是它的外观:
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';
};
如果item
为假(基本上是null
),则基本上返回'not found'
.
Basically return 'not found'
if item
is falsey (null
in this case most likely).
有关KnockoutJS中各种实用程序功能的详细信息,请参见本文
See this article for more information on the various utility functions in KnockoutJS.
这篇关于如果不处理带有非空字符串的else块,则ko.utils.arrayFirst始终返回null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!