如何使用For循环在json对象数组中查找特定值

时间:2016-11-01 20:35:39

标签: javascript arrays json

我正在努力搜索一系列对象并找到一个特定的值。

我有一个像这样的json对象数组:

Object {category_id: "2", name: "MATERIALS", lft: "2", rgt: "17", created_at: "-0001-11-30 00:00:00"…}
Object {category_id: "3", name: "underlayments", lft: "5", rgt: "6", created_at: "-0001-11-30 00:00:00"…}

我有一个包含所有主要类别的页面。假设我点击了主要类别“MATERIALS”。现在我想将我点击的数据与数组中的值进行比较,以便所选的值“MATERIALS”等于“name:MATERIALS”,从那里,我可以提取lftrgt值为“材料”。所以我这样做,但是当“选择”并且对象匹配时,我没有得到名称值。我得到的只是i值,因此我的if语句没有成功。

我的猜测是我的语法错了。

function receiver(data, textStatus, XMLHttpRequest) {  //COMES FROM AN AJAX QUERY

    $("td.depthOne").click(function () {
        var selected = $(this).html();  // THIS WORKS

        var i;
        for (i = 0; i < data.length; i++) {
            if (data[i].name == selected) {  //PROBLEM: THIS DOES NOT WORK - I DON'T GET THE NAME OUT OF THE OBJECT, ONLY THE "i" VALUE
                lft = data[i].lft;
                rgt = data[i].rgt;
                catPosition(lft, rgt);
            };
        };

    });
};

1 个答案:

答案 0 :(得分:-1)

这是答案。请注意,[0]位于return语句的末尾。感谢,stackoverflow answer here

                     var result = data.filter(function( obj )
                     { return obj.name == selected; })[0];

                    console.log('line 96', result.lft, result.rgt);