如果数组有属性,找到同一数组的另一个属性的值?

时间:2014-07-17 06:29:37

标签: javascript jquery arrays json

"dTableRowData": [
    {
        "id": "1",
        "rowData": [
            "tt",
            "Sep13, 2010"
        ],
        "action": [
            {
                "hrefvar": "aaa",
                "label": "fff"
            },
            {
                "hrefvar": "bbb",
                "label": "Details"
            },
            {
                "hrefvar": "ccc",
                "label": "View"
            }
        ]
    }
]

上面是我拥有的数组,我需要找到" action"的值。通过" id" (如果有行动)。请帮我用jQuery实现这个目标。

此问题已关闭

2 个答案:

答案 0 :(得分:0)

我认为你需要像波纹管那样的东西。你有一个类似下面的JSON。

var data = {"dTableRowData": [
    {
        "id": "1",
        "rowData": [
            "tt",
            "Sep13, 2010"
        ],
        "action": [
            {
                "hrefvar": "aaa",
                "label": "fff"
            },
            {
                "hrefvar": "bbb",
                "label": "Details"
            },
            {
                "hrefvar": "ccc",
                "label": "View"
            }
        ]
    }
]}

您想为action中的每个对象获取dTableRowData。我向dTableRowData添加了大括号,否则会抛出错误。

所以这对我来说使用Javascript。

var actions = data.dTableRowData.map(function (obj) {
   // Get each object in data.dTableRowData and get action according to it's id from object
    return obj.action[obj.id];
});


console.log(actions);

答案 1 :(得分:0)

首先,它与jQuery无关。 其次,它的语法错误。 您需要将其包含在{}中以使其有效。 您可以使用this tool检查JSON的有效性。

接下来,您就是这样做的。我已经验证了JSON并添加了虚拟数据,因此有一个元素没有action属性。

var array ={
    "dTableRowData": [
        {
            "id": "1",
            "rowData": [
                "tt",
                "Sep13, 2010"
            ],
            "action": [
                {
                    "hrefvar": "aaa",
                    "label": "fff"
                },
                {
                    "hrefvar": "bbb",
                    "label": "Details"
                },
                {
                    "hrefvar": "ccc",
                    "label": "View"
                }
            ]
        },
        {
            "id": "3",
            "rowData": [
                "tt",
                "Sep13, 2010"
            ],
            "action": [
                {
                    "hrefvar": "aaa",
                    "label": "fff"
                },
                {
                    "hrefvar": "bbb",
                    "label": "Details"
                },
                {
                    "hrefvar": "ccc",
                    "label": "View"
                }
            ]
        },
        {
            "id": "2",
            "rowData": [
                "tt",
                "Sep13, 2010"
            ]
        }
    ]
};

这是一个返回所有具有操作的ID的函数

function getRequiredIDs(myArray){
    var ids = [];

    for (var tableRowData in myArray.dTableRowData){
        var elements = myArray.dTableRowData[tableRowData];
        if(elements.action!=null){
            ids.push(elements.id);
        }
    }
    return ids;
}

这就是你如何使用它

var ids = getRequiredIDs(array);

var result = ""

for(var i=0;i<ids.length;i++){
    result+=ids[i]+" ";
}

alert("IDs that have actions are - "+result);

以下是fiddle

编辑:

如果您希望获得特定actions的{​​{1}},则需要更改代码,如下所示。

id

这就是你如何使用它。

function getRequiredActions(_id,myArray){
    for (var tableRowData in myArray.dTableRowData){
        var elements = myArray.dTableRowData[tableRowData];
        if(elements.id == _id){
            if(elements.action != null){
                return elements.action;
            } else {
                return false;
            }
        }
    }
}

Final fiddle

相关问题