Javascript 如何从变量向JSON对象添加索引
我有一个包含JSON数组的文件列表:Javascript 如何从变量向JSON对象添加索引,javascript,node.js,json,Javascript,Node.js,Json,我有一个包含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 +
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):
[
,
[
{
信息在此
},
]
]
我如何组合所有这些JSON文件,并在它们唯一的ID下组织它们,以便以后可以找到它们?您需要做的就是创建一个对象哈希,其中键是团队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;
.这个问题我不太清楚,但如果我理解正确,你最好选择使用
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
}, {});
编辑后添加。
[]
是数组语法,应该有数字索引。value.id
是一个数字吗?我怀疑你在追求一个物体。这就像let allResults={};allResults.stuff=resultsJson;allResults[teamId]=resultsParsed顺便说一句,我不明白为什么人们会来投票否决我的问题。我要确保我提供了尽可能多的上下文而不会让它混淆,我正在事先研究这个问题,看看我是否在某个地方找到了与这个问题完全相同的人。给出了什么?许多人认为对象表示法的使用是javascript的一些基础。因此,提出一个与此相关的问题可以被视为事先没有做足够的研究,因为有很多关于它的现有参考文献。另外……您确定名为team WhateverTeamId.json
的文件存在吗。。。。我怀疑这个空间有问题
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
}, {});