如何按属性从可观察数组中返回项目

时间:2016-02-26 08:22:54

标签: javascript knockout.js knockout-3.0

我有这段代码:

group1

如果var id = event.target.getAttribute('id'); var matchedItem = ko.utils.arrayForEach(self.ProductEffectImagesToMatch(), function(item) { if (item.index == id) { return item; } } ); index匹配,我希望在数组中按index获取该项,然后返回该项。

如何才能正确完成?

2 个答案:

答案 0 :(得分:1)

如果只有一个项目,则可以使用ko.utils.arrayFirst,如果很少,则可以使用arrayFilter

var matchedItem = ko.utils.arrayFirst(self.ProductEffectImagesToMatch(), function (item) {
    return item.index == id;
});

答案 1 :(得分:0)

“ko.utils”。没必要。如果“self.ProductEffectImagesToMatch”是一个可观察的数组,那么“self.ProductEffectImagesToMatch()”将返回普通数组,您可以按谓词进行过滤:

var matchedItem = self.ProductEffectImagesToMatch().filter(function (item) {
    return item.index == id;
})[0];

[0]在空结果的情况下返回undefined,否则返回第一个匹配项。

更新

如果要获取数组的第n个元素,可以使用“id”作为索引:

matchedItem = self.ProductEffectImagesToMatch()[id];