【发布时间】:2019-11-15 21:01:15
【问题描述】:
我需要动态提取 JSON 文件的键值,并在稍后将其用作函数中的参数。在下面的示例中,我想从 JSON(名字)派生第一个键,然后使用它来让“Bob”返回。下面的 sn-p 包含有关哪些有效和哪些无效的粗略概念。在生成 json 文件之前,我不会知道 firstname 是键值,所以我真的很想让最后一行工作。
即使控制台为我的变量 fName 记录“名字”,但当我稍后使用 fName 时它返回未定义。
var person = [];
person = [{'firstname' : 'John', 'lastname': 'Doe'},{'firstname': 'Bob', 'lastname': 'Smith'}]
var kPeeps = Object.keys(person[1]);
var fName = kPeeps[0];
console.log(kPeeps); // Keys of person - returns firstname, lastname
console.log(fName); // Item 1 in the array of Keys - returns firstname
console.log(person[1].firstname); //Works - Returns Bob
console.log(person[1].fName); //Not so much - Returns Undefined
【问题讨论】:
-
因为它正在寻找“fName”而不是变量....点符号不能使用变量。您必须使用括号表示法,但您很可能应该使用 Object.entries()
-
要查找变量键,您需要方括号表示法:
person[1][fName] -
问题标题与问题关系不大,更像是“如何通过变量键访问属性” -
person[1].fName访问文字键"fName",而不是存储在变量 fName 中的值。对变量键名使用括号访问器,例如person[1][fName]- 更多信息请参见 this MDN page -
您可以使用简单的参数化函数,例如:::: const person = [{'firstname' : 'John', 'lastname': 'Doe'},{'firstname': 'Bob' , '姓氏': '史密斯'}]; function getFirstName(index, prop) { return person[index][prop]; } console.log(getFirstName(1, 'firstname'));
标签: javascript json