我正在努力解决这个问题,我仍然是javascript的新手,我正在尝试jquery $.inarray函数,因为我需要能够在数组中找到一个值,以便我可以从同一个数组“line”返回其他值,比如它的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)
解决方法:
我仍然不完全确定你在问什么,所以这里有一些假设和一个快速的解决方案.
>你正在寻找那个blob数据中的uiemail_ids
> 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:
deepsearch( arr, '4'); // returns upd3
deepsearch( arr, '3'); // returns upd2
这可能是脆弱的,当然可以改进,但也许它会给你一个攻击角度.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。