我正在努力解决这个问题,我还是 javascript 的新手,我正在尝试 jquery $.inarray 函数,因为我需要能够在数组中找到一个值,以便我可以从同一个数组返回其他值“行”,例如它的 ID。
当我尝试使用 jquery 的 inarray 函数时,像这样,我只是返回 -1,说当我知道值存在时它不存在,嵌套在数组中。我不确定如何接近这个以便我可以搜索一个值,非常感谢任何建议。
valuereturn = $.inArray("search_for_value", jsonarray) ;
alert (valuereturn)
编辑 2:
这是我从 cakephp 回显 JSON 的结果:
{"getdata":[{"Uiemail":{"uiemail_id":"2","divid":"upd1","width":"200","height":"200","leftpos":"122","toppos":"122","cssgroup":"1","colortop":"","colorbottom":"","colorborder":"","borderwidth":"","zindex":""}},
{"Uiemail":{"uiemail_id":"3","divid":"upd2","width":"200","height":"200","leftpos":"333","toppos":"444","cssgroup":"1","colortop":"","colorbottom":"","colorborder":"","borderwidth":"","zindex":""}},
{"Uiemail":{"uiemail_id":"4","divid":"upd3","width":"200","height":"200","leftpos":"555","toppos":"466","cssgroup":"1","colortop":"","colorbottom":"","colorborder":"","borderwidth":"","zindex":""}}]}
编辑:
此外,这里是输出:
alert(typeof jsonarray+'\n'+jsonarray.length)
output= "object 3 "
我也试过这个,但它没有给出值并且在我的页面上出错:
alert(jsonararray)
最佳答案
我仍然不能完全确定您要问什么,所以这里有一些假设和一个快速的解决方案。
- 您正在该数据 block 中寻找
uiemail_id
- blob 可以任意深
- 如果你找到一个,你想在同一“行”中获取
divid
的值 - 第一个找到的就是赢家
现在拼凑一个小的递归函数:
function deepsearch ( blob, val ) {
var result = false;
for( var item in blob ) {
if( typeof blob[item] === 'object' ) {
result = deepsearch( blob[item], val );
if( result != false ) return result;
} else if( blob[item] == val && item == 'uiemail_id' ) {
// found item, blob = obj in which found
result = blob.divid; // the divid from this "line"
break; // assume first found wins
}
}
return result;
}
输入您的确切 JSON:
var arr = {"getdata":[{"Uiemail":...
我们现在可以查找 4
的 uiemail_id
,并获取 upd3
的相应 divid
:
deepsearch( arr, '4'); // returns upd3
deepsearch( arr, '3'); // returns upd2
这可能很脆弱,当然可以改进,但也许它会给你一个攻击 Angular 。
关于javascript - Jquery,在嵌套数组上使用 "inarray"来查找特定值的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3326434/