【问题标题】:How do I grab specific data dynamically from an array of objects?如何从对象数组中动态获取特定数据?
【发布时间】:2022-02-15 17:30:48
【问题描述】:

情况

我的代码采用本地 JSON 文件并将其解析为对象。这部分工作完美。

我的目标是创建一个带有两个参数的函数:

  1. 要解析的 JSON 文件的路径。
  2. 特定对象的属性名称,以便我可以获取键后面的值。

问题

我添加了一个变量 (objectName) 来传递属性名称。我还添加了[0].fx,所以我只能从第一个对象调用数据。当我运行我的代码时,我得到了 Undefined。

我哪里做错了?

(在下面的示例代码中,我的目标是获得“大卫”)

const localDataObject = (fileName, objectName) => {
const localData = path.join(__dirname, "../", fileName);

fs.readFile(localData, (err, data) => {
   const objectData = JSON.parse(data);
   const fx = objectName;
        console.log(objectData[0].fx);
    });
};

localDataObject("./Family.json", "name");

第一个对象如下所示:

[
    {
        "name": "David",
        "age": "24",
        "role": "Studet"
    },

]

【问题讨论】:

  • 试试objectData[0][objectName]objectData[0][fx]

标签: javascript node.js json


【解决方案1】:

您的代码的解决方案是:

const localDataObject = (fileName, objectName) => {
const localData = path.join(__dirname, "../", fileName);

fs.readFile(localData, (err, data) => {
   const objectData = JSON.parse(data);
   const fx = objectName;
        console.log(objectData[0][fx]);
    });
};

localDataObject("./Family.json", "name");

【讨论】:

  • 为什么会这样?
  • 这是因为之前你使用过console.log(objectData[0].fx);这意味着它正在分配 fx 的地址以获取错误的节点值,并且它会给您一个未定义的值,因为它不存在。但是当您将其更改为 [fx] 时,这意味着首先获取 fx 的值,然后使用它来获取节点。希望我的解释对你有所帮助。
  • 太棒了。感谢您对 Ghazni 的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-29
  • 1970-01-01
  • 2021-07-15
  • 1970-01-01
  • 2017-05-14
  • 1970-01-01
相关资源
最近更新 更多