这是我的代码生成的格式:
[
{
"certifications": [
{
"certificate": "NA",
"completed_on": "2019-09-24T18:30:00.000Z",
"tc_name": "TC-174195"
}
],
"firstname": "Dipak",
"lastname": "Das",
"email": "dasdipak99@gmail.com"
}
]
我想设计如下格式:
[
{
firstname: "Dipak",
lastname: "Das",
email: "dasdipak99@gmail.com",
certifications: [
{
certificate: "NA",
completed_on: "2019-09-24T18:30:00.000Z",
tc_name: "TC-174195"
}
]
}
]
下面是我的代码:
var user = [];
var certificate = {
certifications: []
};
certificate["firstname"] = rows[0].firstname;
certificate["lastname"] = rows[0].lastname;
certificate["email"] = rows[0].email;
for (let i = 0; i < rows.length; ++i) {
certificate.certifications.push({
certificate: rows[i].certification_names,
completed_on: rows[i].completed_on,
tc_name: rows[i].tc_name
});
}
任何想法如何维护插入顺序?我对javascript很陌生,如果我不能很好地解释的话,抱歉。
答案 0 :(得分:1)
自ES6以来,有人声称订单会是
有这个blog post和这个Stackoverflow thread。
但是你的台词
var certificate = {
certifications: []
};
将certifications
设为第一个属性。因此,您需要:
var certificate = {};
certificate["firstname"] = "Albert";
certificate["lastname"] = "Lee";
certificate["email"] = "a@b.com";
certificate["certifications"] = [];
certificate.certifications.push({
certificate: "Java",
completed_on: "2020/01/02",
tc_name: "java2020"
});
console.log(certificate);
要更好地保证顺序,请使用Map
,以保持键的原始插入顺序。通常,您可能不需要它,但是仅出于某种原因(如果您想订购),并且可以在for-of循环中拥有这样的订单:
var certificate = new Map();
certificate.set('firstname', "Albert");
certificate.set('lastname', "Lee");
certificate.set('email', "a@b.com");
certificate.set("certifications", []);
certificate.get("certifications").push({
"certificate": "Java",
"completed_on": "2020/01/02",
"tc_name": "java2020"
})
console.log(certificate);
for (e of certificate) console.log(e)
StackOverflow不会为以下内容打印任何内容:
console.log(certificate);
使用Node或Chrome,它是:
Map {
'firstname' => 'Albert',
'lastname' => 'Lee',
'email' => 'a@b.com',
'certifications' => [
{
certificate: 'Java',
completed_on: '2020/01/02',
tc_name: 'java2010'
}
]
}
答案 1 :(得分:0)
在名字,姓氏和电子邮件之后初始化空的证书数组:
let rows=[{certification_name:"NA",completed_on:"2019-09-24T18:30:00.000Z",tc_name:"TC-174195"}]
let certificate = {}
certificate["firstname"] = "Dipak"
certificate["lastname"] = "Das"
certificate["email"] = "dasdipak99@gmail.com"
certificate["certifications"] = []
for (let i = 0; i < rows.length; ++i) {
certificate.certifications.push({
"certificate": rows[i].certification_names,
"completed_on": rows[i].completed_on,
"tc_name": rows[i].tc_name
})
}
console.log(certificate)