我尝试获取 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]
它返回的函数并不是真正值得比较的值。
问题是我怎样才能让它正常工作?
如果这里有什么不清楚的地方,请询问。
最佳答案
您需要使用ko.unwrap
(如果您使用的是旧版本的 KO,则需要使用 ko.utils.unwrapObservable
)以确保您始终正常工作具有基础值而不是可观察值:
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;
};
关于javascript - 如何获取数组中对象的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22373911/