【问题标题】:Extract JSON Keys for JS Variable [duplicate]为 JS 变量提取 JSON 键
【发布时间】: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


【解决方案1】:

如果您需要一个简单快捷的解决方案,您需要将 person[1].fName 更改为 person[1][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]); //Now it should return Bob

【讨论】:

    【解决方案2】:

    您可以如下使用它 人[1][fName]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-13
      • 2021-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-02
      • 2018-11-02
      • 1970-01-01
      相关资源
      最近更新 更多