JSON/JavaScript - 通过传递索引和属性名来获取值

Bin*_*Cat 1 javascript json eval

对于以下JSON:

var myJSON = 
{ "employee": [
      {
        "firstName": "John",
        "lastName": "Doe",
        "Age": 20
      },
      {
        "firstName": "Jane",
        "lastName": "Moe",
        "Age": 35
      },
      {
        "firstName": "Mike",
        "lastName": "Poe",
        "Age": 28
      }
   ]
};
Run Code Online (Sandbox Code Playgroud)

假设我需要通过传递索引和属性名来获取特定值.例如,employee[1].lastName会给我值"Moe".但是,我有一些粗略的时间搞清楚什么是一个简单的JavaScript函数,它将这两个值作为输入并将值作为输出返回.以下代码似乎不起作用:

function getValue(index, attrName) {

    var val = eval("myJSON.employee[" + index + "]." + attrName);  // is using eval() even a sound approach?
    return val;

}
Run Code Online (Sandbox Code Playgroud)

Fra*_*bot 5

这应该做到这一点.

var myJSON = 
{ "employee": [
      {
        "firstName": "John",
        "lastName": "Doe",
        "Age": 20
      },
      {
        "firstName": "Jane",
        "lastName": "Moe",
        "Age": 35
      },
      {
        "firstName": "Mike",
        "lastName": "Poe",
        "Age": 28
      }
   ]
};

function getValue(index, attrName) {

    return myJSON['employee'][index][attrName];

}

getValue(1,'lastName')
Run Code Online (Sandbox Code Playgroud)

输出:"Moe".

属性访问器var['attr']var.attr是相同的,除了一些属性名称不能像来表达var.attr.假设您的属性名称是"foo-bar".代码var.foo-bar不正确所以你必须使用var['foo-bar'].此外,您可以使用window['var-name'].