本文介绍了如果不处理带有非空字符串的else块,则ko.utils.arrayFirst始终返回null的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这可以正常工作:

  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需要一个返回truefalse的函数,对每个项目进行评估.返回该函数为其返回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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 19:43