如何在数组中获得对象的索引

How to get index of object in Array?

本文关键字:对象 索引 数组      更新时间:2023-09-26

我试图获得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.utils.unwrapObservable,如果您使用的是旧版本的KO),以确保您始终与底层值一起工作,而不是与可观察对象一起工作:

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