我试图获得indexOf
object
,它位于可观察数组(Knockout
)中。
我试图做的就是这个简单的例子:
var arrayObjectIndexOf = function arrayObjectIndexOf(myArray, searchTerm, property) {
for (var i = 0, len = myArray.length; i < len; i++) {
if (myArray[i][property] === searchTerm) return i;
}
return -1;
};
var sampleArray = [{ItemID: "2", ItemName: "name1"}, {ItemID: "3", ItemName: "name2"}]
sampleArray: ko.observableArray();
arrayObjectIndexOf(sampleArray(), "2", "ItemID"); // it's always returns me -1 but should in this sample return index equal to 0
myArray[i][property]
它的返回功能并不值得比较。
问题是我怎样才能让它按预期工作?
如果有什么不清楚的地方请询问。
答案 0 :(得分:2)
您需要使用ko.unwrap
(或ko.utils.unwrapObservable
,如果您使用的是旧版本的KO),以确保您始终使用基础值,而不是使用observables:
var arrayObjectIndexOf = function arrayObjectIndexOf(myArray, searchTerm, property) {
var unwrappedArray = ko.unwrap(myArray);
for (var i = 0, len = unwrappedArray.length; i < len; i++) {
if (ko.unwrap(unwrappedArray[i][property]) === searchTerm) return i;
}
return -1;
};