我正在努力搜索一系列对象并找到一个特定的值。
我有一个像这样的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”,从那里,我可以提取lft
和rgt
值为“材料”。所以我这样做,但是当“选择”并且对象匹配时,我没有得到名称值。我得到的只是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);
};
};
});
};
答案 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);