如何通过 属性 return 可观察数组中的项目
How to return an item from an observable array by property
我有这个代码:
var id = event.target.getAttribute('id');
var matchedItem = ko.utils.arrayForEach(self.ProductEffectImagesToMatch(),
function(item) {
if (item.index == id) {
return item;
}
}
);
我想通过数组中的 index
获取项目,如果 index
匹配 id
那么 return 项目。
如何正确完成?
如果只有一项,你可以使用ko.utils.arrayFirst
,如果很少,你可以使用arrayFilter
。
var matchedItem = ko.utils.arrayFirst(self.ProductEffectImagesToMatch(), function (item) {
return item.index == id;
});
"ko.utils." 是不必要的。如果 "self.ProductEffectImagesToMatch" 是一个可观察数组,那么 "self.ProductEffectImagesToMatch()" returns 普通数组,你可以通过谓词过滤:
var matchedItem = self.ProductEffectImagesToMatch().filter(function (item) {
return item.index == id;
})[0];
[0] returns 如果结果为空,则为未定义,否则为第一个匹配项。
更新
如果要获取数组的第n个元素,可以使用"id"作为索引:
matchedItem = self.ProductEffectImagesToMatch()[id];
我有这个代码:
var id = event.target.getAttribute('id');
var matchedItem = ko.utils.arrayForEach(self.ProductEffectImagesToMatch(),
function(item) {
if (item.index == id) {
return item;
}
}
);
我想通过数组中的 index
获取项目,如果 index
匹配 id
那么 return 项目。
如何正确完成?
如果只有一项,你可以使用ko.utils.arrayFirst
,如果很少,你可以使用arrayFilter
。
var matchedItem = ko.utils.arrayFirst(self.ProductEffectImagesToMatch(), function (item) {
return item.index == id;
});
"ko.utils." 是不必要的。如果 "self.ProductEffectImagesToMatch" 是一个可观察数组,那么 "self.ProductEffectImagesToMatch()" returns 普通数组,你可以通过谓词过滤:
var matchedItem = self.ProductEffectImagesToMatch().filter(function (item) {
return item.index == id;
})[0];
[0] returns 如果结果为空,则为未定义,否则为第一个匹配项。
更新
如果要获取数组的第n个元素,可以使用"id"作为索引:
matchedItem = self.ProductEffectImagesToMatch()[id];