想要有一个插入语句而不是在循环中生成。
是否有更简单的方法来解决此问题? ES6还是lodash?
注意:由于JSON结构具有多种供应商类型,因此本质上是动态的,因此无法更改。因此,出现了两个循环。数据类型是字符串。
JSFIDDLE LINK
for (var key in vendorObject) {
if (vendorObject.hasOwnProperty(key)) {
let newObject = vendorObject[key];
for (let i = 0; i < newObject.length; i++) {
for (const vendorKey in newObject[i]) {
if (newObject[i].hasOwnProperty(vendorKey)) {
keys.push(vendorKey);
values.push("'" + newObject[i][vendorKey] + "'");
}
}
let insertStatement = `INSERT INTO INSERT INTO mytable(` + keys.toString() + `) VALUES (` + values.toString() + ` );`;
console.log(insertStatement);
}
}
}
这是我的方法。首先将数组展平,然后使用map
const insertStatement = Object.values(vendorObject).flat().map((x, i) => (i === 0? `INSERT INTO mytable(${Object.keys(x).join(', ')}) VALUES ` : '') + `("${Object.values(x).join('", "')}")`).join(', ') + ';'
console.log(insertStatement)