Javascript KnockoutJS ArrayFirst不';I don’我没有按预期工作
我已经在这里尝试了以下解决方案:Javascript KnockoutJS ArrayFirst不';I don’我没有按预期工作,javascript,knockout.js,observable,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()
- 这:
- 这:
- 这:
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
我附上了这些值的片段:
检查声明
return item.Sku()==a.Sku()
==:等值和等类型,
==:等于
在您的情况下,两个摘要对象的值和类型必须相等。好的,试试这个
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是可观察的,而您没有对其进行评估!阅读我对您原始问题的评论运行您的项目,在arrayFirst和console日志中为我们放置一个调试器:“item”和“a”,并使用snipetHi@MKougiouris updated更新您的帖子为什么a
a.Sku
是可见的<代码>=带有项.Sku()
-值??可观察值与价值??这是错误的吗?调试时要小心。你记录的东西与你在下面比较的不同,给了你错误的信息。您正在记录ko.toJSON的结果,该结果实际上会对您隐藏传递的属性是否是可观察的,因为它将返回未包装的值。在您的示例中,如果“a.Sku”是可观察的,您将正确读取x===y,但这并不意味着a.Sku===item.Sku()。“a.Sku”将是一个函数,“item.Sku()”将是一个实际字符串!只是把这个留在这里作为将来的帮助说明