【问题标题】:How to add an index to a JSON object from a Variable如何从变量向 JSON 对象添加索引
【发布时间】:2020-09-05 04:17:59
【问题描述】:

我有一个包含 JSON 数组的文件列表:

let rawTopTeams = fs.readFileSync('topTeams.json');
let topTeams = JSON.parse(rawTopTeams);
let allResults = [];
topTeams.teams.forEach(function(value){
    teamId = value.id;
    let resultsJson = fs.readFileSync('team '+ teamId +'.json');
    let resultsParsed = JSON.parse(resultsJson); 

// I want to combine them into a unique JSON, and I want to add the file name as a key: 

    allResults[teamId] = resultsParsed;

问题是这不起作用。尝试做 teamId.toString() 但它不会改变结果(对于 teamId = 6137):

[
  <6137 empty items>,
  [
    {
      INFO HERE
    },
  ]
]

我如何组合所有这些 JSON 文件,并根据它们的唯一 ID 组织它们,以便我以后可以找到它们?

【问题讨论】:

  • 编辑添加。
  • [] 是数组语法,应该有数字索引。 value.id 是数字吗?我怀疑你是在寻找一个对象。这就像let allResults = {}; allResults.stuff = resultsJson; allResults[teamId] = resultsParsed;
  • 顺便说一句,我很困惑为什么人们会过来并否决我的问题。我确保我提供尽可能多的上下文而不会让人感到困惑,并且我正在事先研究这个问题,看看我是否在某个地方找到了完全相同问题的人。什么给了?
  • 许多人认为对象符号的使用是 javascript 的一些基础知识。因此,提出与此相关的问题可能被视为事先没有做足够的研究,因为有很多关于它的现有参考资料。

标签: javascript node.js json


【解决方案1】:

您需要做的就是创建一个对象哈希,键是团队 ID

    let rawTopTeams = fs.readFileSync('topTeams.json');
    let topTeams = JSON.parse(rawTopTeams);
    let allResults = {}; // Notice I changed this to object
    topTeams.teams.forEach(function(value){
        teamId = value.id;
        let resultsJson = fs.readFileSync('team '+ teamId +'.json');
        let resultsParsed = JSON.parse(resultsJson); 

        // This will now add resultsParsed as a subobject of key teamId under allResults object
        allResults[teamId] = resultsParsed;

【讨论】:

    【解决方案2】:

    .这个问题对我来说不是很清楚,但如果我理解正确你最好选择使用reduce;可能类似于以下

    let rawTopTeams = fs.readFileSync('topTeams.json');
    let topTeams = JSON.parse(rawTopTeams);
    let allResults = topTeams.teams.reduce((acc, team) => {
      let resultsJson = fs.readFileSync('team '+ team.id +'.json');
      acc[team.id] = JSON.parse(resultsJson);
      return acc
    }, {});
    

    【讨论】:

    • 也....你确定那些名为team WhateverTeamId.json的文件在那里....这个空间对我来说是可疑的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 2013-02-17
    • 2017-04-26
    相关资源
    最近更新 更多