2014-03-13 44 views
1

我试图获得indexOfobject这是可观察数组(Knockout)。 什么我tryed的办展这个简单的例子:如何获取数组中的对象的索引?

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]它返回的功能不是真的值来比较。

问题是我该如何让它工作,因为它应该?

如果有什么不明白的地方请问。

回答

2

你需要(如果您正在使用KO的旧版本或ko.utils.unwrapObservable),以确保您始终与基本价值的工作,而不是与观测使用ko.unwrap

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; 
}; 
+0

这正是我需要感谢:) – harry180

相关问题