如何获取Array中的对象索引?

时间:2014-03-13 09:15:29

标签: javascript arrays knockout.js

我试图获得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]它的返回功能并不值得比较。

问题是我怎样才能让它按预期工作?

如果有什么不清楚的地方请询问。

1 个答案:

答案 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;
};