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

Laz*_*ale 5 javascript knockout.js knockout-3.0

我有这个代码:

var id = event.target.getAttribute('id');

var matchedItem = ko.utils.arrayForEach(self.ProductEffectImagesToMatch(),
  function(item) {
    if (item.index == id) {
      return item;
    }
  }
);
Run Code Online (Sandbox Code Playgroud)

index我想获取数组中的项目,如果index匹配id则返回该项目。

如何才能正确地做到这一点?

TSV*_*TSV 3

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

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

如果结果为空,[0] 返回未定义,否则返回第一个匹配项。

更新

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

matchedItem = self.ProductEffectImagesToMatch()[id];
Run Code Online (Sandbox Code Playgroud)