javascript搜索对象数组的数组属性

时间:2014-03-16 01:31:47

标签: javascript jquery arrays object

我确定标题很混乱,但我不确定如何说出来。我有一张纸质表格,我们试图通过网页将其放在iPad上。表格包括诊断和程序。工作流程是用户单击诊断,然后单击多个过程,然后重复该过程。

我有一个对象,它由以下属性组成,用于表示此工作流程

  1. 一个名为诊断的字符串
  2. 一个名为procedures
  3. 的字符串数组
  4. 一个名为color的字符串
  5. 当用户点击诊断和程序时,它会为这些项目提供背景信息,以便他们可以轻松地看到该过程与诊断相对应。然后将其添加到这些对象的数组中。我正在研究从阵列中删除对象的过程,如果他们再次单击诊断或过程。我有以下代码

    if ( isDiagnosis || isProcedure )
        {
            if (isDiagnosis) {
                var item = $(this).html().trim();
                var result = arr.filter(function (obj) {
                    return obj.diagnosis === item;
                })[0];
                alert(result.color);
            }
            if (isProcedure) {
                var item = $(this).html().trim();
                var result = arr.filter(function (obj) {
                    return obj.procedure.indexOf(item) > -1;
                })[0];
                alert(result.color);
            }
    
        }
    

    我警告颜色是测试过程的一部分。代码可以正常用于诊断,但我试图找出如何搜索具有包含分配给变量项的值的过程数组的对象。我收到错误,因为obj是undefined因此没有方法indexOf。有人可以帮助我找到在过程数组属性中搜索值item的对象的最佳方法吗?

    示例json对象(我​​知道它的格式不正确,我不是很擅长json)如果你点击33333程序然后我希望它返回数组中的第二个对象。

        arr = [
        diagnoisset1 = {
            "diagnosis": "acne",
            "color": "red",
            "procedure": [ "11111", "22222" ]
        }, 
        diagnosisset2 = {
            "diagnosis": "adhd",
            "color": "green",
            "procedure": [ "33333", "44444" ]
        },
        diagnosisset3 = {
            "diagnosis": "broken leg",
            "color": "yellow",
            "procedure": [ "55555", "666666" ]
        };
    ]
    

0 个答案:

没有答案