[英]Dynamically Creating object keys
我一直在尝试理解和掌握使用 javascript 创建 json 对象,但是我似乎无法弄清楚如何(首先迭代一些东西,并将该值用作我的键)。 我的第二个问题是当我看到我的 json 结果时,它似乎总是与前面的空白项嵌套在一起。 这就是我的意思:
我当前的代码部分是:
.then((data)=>{
connection.query("SELECT * FROM amion_onCall", function (err, result, fields){
const fixed = [];
let i;
for (i in result){
aName = result[i].name;
aServ = result[i].specialty;
aShift = result[i].shift;
aOff = result[i].office;
aCell = result[i].cell;
aTag = result[i].tag;
var data = {aServ: {name:aName, service: aServ, shift: aShift, office: aOff, cell: aCell, tag: aTag}};
// console.log(data);
fixed.push(data);
}
fs.writeFile('./data/json/newAmion.json', JSON.stringify(fixed), function(err){
if (err) throw err;
console.log("Wrote New Amion");
});
});
})
我的 json 查看器中的 output 是:
[
{
"aServ": {
"name": "Dr.John",
"service": "Cardiology",
"shift": "7a-7p",
"office": "123",
"cell": "123-456-789",
"tag": "no tags"
}
},
...等等我的〜150个条目。
问题#1:我想将它提升一个完整的级别。 我不确定如何做到这一点,或者为什么它开始如此深入地嵌套。
问题 #2:当我迭代 aServ 时,我希望实际值是 json 开头的 output。 我当前的代码为每个人静态打印“aServ”……我不想那样做。 例如,这就是我试图让我的 json 到 output 的方式:
{
"Cardiology": {
"name": "Dr.John",
"service": "Cardiology",
"shift": "7a-7p",
"office": "123",
"cell": "123-456-789",
"tag": "no tags"
},
"Pulmonology": { ...and so on
}
答案1:
“前面的空白项”是什么意思? 你的意思是“服务”吗? 如果是,因为你在这里做了var data = {aServ: {... } }
。
另外,你有很多东西。 所以那些在数组[]
里面。
答案 2:
// Change it to object instead of array
const fixed = {};
// Inside array
if (!Array.isArray(fixed[aServ])) {
fixed[aServ] = []
}
fixed[aServ].push({
name: aName,
service: aServ,
shift: aShift,
office: aOff,
cell: aCell,
tag: aTag,
})
无需将项目推送到数组。
请记住,如果有多个aServ
具有相同的值,那么它将替换现有项目。 这就是为什么你应该使用数组。
问题#1:我想将它提升一个完整的级别。 我不确定如何做到这一点,或者为什么它开始如此深入地嵌套。
它是嵌套的,因为您位于对象数组中。 JavaScript 中的 Arrays 用括号 [] 表示。 在这种情况下,我认为这就是您想要的:您正在创建一个对象数组。
问题 #2:当我迭代 aServ 时,我希望实际值是 json 开头的 output。
这一行:
var data = {aServ: {name:aName, service: aServ, shift: aShift, office: aOff, cell: aCell, tag: aTag}}
需要改成这样:
var data = {[aServ]: {name:aName, service: aServ, shift: aShift, office: aOff, cell: aCell, tag: aTag}}
注意括号。 这会将您的变量值插入为数组键。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.