javascript - Jquery,在嵌套数组上使用 "inarray"来查找特定值的索引?

标签 javascript jquery arrays search

我正在努力解决这个问题,我还是 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)

最佳答案

我仍然不能完全确定您要问什么,所以这里有一些假设和一个快速的解决方案。

  1. 您正在该数据 block 中寻找 uiemail_id
  2. blob 可以任意深
  3. 如果你找到一个,你想在同一“行”中获取 divid 的值
  4. 第一个找到的就是赢家

现在拼凑一个小的递归函数:

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":...

我们现在可以查找 4uiemail_id,并获取 upd3 的相应 divid:

deepsearch( arr, '4'); // returns upd3
deepsearch( arr, '3'); // returns upd2

这可能很脆弱,当然可以改进,但也许它会给你一个攻击 Angular 。

关于javascript - Jquery,在嵌套数组上使用 "inarray"来查找特定值的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3326434/

相关文章:

javascript - 如何在 Chart.js 中将 Y 轴值从数字更改为字符串?

php - xmlhttp.open() 用于外部 php 文件

javascript - 我的 jquery 脚本不工作

arrays - f# 找出 2 个 obj[] 列表之间的差异

java - 为什么扫描仪功能不起作用?

javascript - 将事件监听器添加到模板文字内的按钮

javascript - 为什么 jslint 提示我的空间?

jquery - h1 元素的动画背景

javascript - 带缩略图的 jQuery fancybox

java - 如何将 Java Map 序列化为 PHP 的数组序列化格式