如果一个数组有一个属性,则查找同一数组的另一个属性的值


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

上面是我的数组,我需要通过"id"找到"action"的值(如果存在action)。请帮我用jQuery实现这个。

这个问题已经结束

我认为你需要像下面这样的东西。你有一个JSON,如下所示。

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

你想为dTableRowData中的每个对象得到一个action。我给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);

首先,它与jQuery无关。其次,这是一个语法错误。您需要将其包装在{}中以使其有效。您可以使用这个工具来检查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);

小提琴来了

编辑:

如果您想为特定的id获得actions,您需要像下面这样更改代码:

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;
            }
        }
    }
}

这就是你如何使用它。

var actions = getRequiredActions("1",array);
console.log(actions);
最终小提琴

最新更新