【问题标题】:If an array has an attribute, find the value of another attribute of the same array? [closed]如果一个数组有一个属性,求同一个数组的另一个属性的值? [关闭]
【发布时间】:2014-07-17 06:29:37
【问题描述】:
"dTableRowData": [
    {
        "id": "1",
        "rowData": [
            "tt",
            "Sep13, 2010"
        ],
        "action": [
            {
                "hrefvar": "aaa",
                "label": "fff"
            },
            {
                "hrefvar": "bbb",
                "label": "Details"
            },
            {
                "hrefvar": "ccc",
                "label": "View"
            }
        ]
    }
]

上面是我拥有的数组,我需要通过获取“id”来找到“action”的值(如果存在 action)。请帮助我使用 jQuery 实现这一目标。

此问题已结束

【问题讨论】:

  • 你的问题不清楚。 action 的值是一个数组。 id 似乎与action 的检索无关。如果您尝试检索 action 并且它不存在于对象中,您将收到 undefined,您可以检查它。
  • 所以,它应该返回action 数组的第二个元素,因为id1?
  • 是的,“action”的值是一个数组,我需要的是通过查看“id”获得的动作值,所以在解析数组时,取“id”并打印“action”价值观。这就是我需要的
  • @wolle 我需要使用 jquery 来实现这一点,我希望常识能这么说
  • 其实,一个明确的问题是我们需要什么。

标签: javascript jquery arrays json


【解决方案1】:

我认为你需要像下面这样的东西。你有一个像下面这样的 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);

【讨论】:

  • 感谢您的工作正常 :)
【解决方案2】:

首先它与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

编辑:

如果您想获取特定idactions,则需要将代码更改为如下所示。

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

Final fiddle

【讨论】:

    猜你喜欢
    • 2019-07-16
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 2011-05-09
    • 2015-02-11
    • 1970-01-01
    相关资源
    最近更新 更多