KnockoutJS ArrayFirst不能按预期工作

时间:2019-07-25 09:21:25

标签: javascript knockout.js observable

我已经在这里尝试了解决方案:

但是对我没有任何作用。我正在检查可观察数组中是否已存在项目

ko.utils.arrayForEach(self.Summary(), function (item) {

            var match = ko.utils.arrayFirst(self.filteredSummary(), function (a) {
                return a.Sku == item.Sku()
            });

            if (!match) {
                // Do push
            }
        });

我做错什么了吗?即使已调试,它始终会返回null。

我附上了这些代码的片段: enter image description here

2 个答案:

答案 0 :(得分:1)

检查语句,

return item.Sku() === a.Sku()

===:等于值和等于类型, ==:等于

https://www.w3schools.com/js/js_operators.asp

在您的情况下,两个摘要对象的值和类型必须相等。

答案 1 :(得分:0)

好,尝试这个

ko.utils.arrayForEach(self.Summary(), function (item) {

            var match = ko.utils.arrayFirst(self.filteredSummary(), function (a) {
                return a.Sku() == item.Sku();
            });

            if (!match) {
                // Do push
            }
        });

如果这有效,那么问题是a.SKu是可观察的,而您没有对其进行评估!阅读我对您的原始问题的评论