javascript - 如何获取数组中对象的索引?

标签 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] 它返回的函数并不是真正值得比较的值。

问题是我怎样才能让它正常工作?

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

最佳答案

您需要使用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/

相关文章:

javascript - 返回包含每个对象的命名属性的数组

java - 如何在 Java 中比较 2 个列表

javascript - 将 Knockout observableArray JSON 保存到 localStorage

javascript - 如何使用 JavaScript/Jquery/Knockout JS 将数字数组绑定(bind)到范围 slider

javascript - 使用 TweenMax 在背景图案和 z-index 不起作用的 div 中淡入淡出

javascript - 在 angularjs Controller 中调用全局 javascript 函数的可测试方法

c - 在c中查找作为函数参数接收的整数数组的大小

javascript - 失败的 prop 类型 : The prop `options` is marked as required in `signupCheckBoxes` , 但其值为 `undefined`

Javascript变量范围问题

javascript - KnockoutJS 现在 jQuery 模板即将过时