gpt4 book ai didi

Javascript 对象偏执狂(我可以依赖元素的顺序吗)

转载 作者:行者123 更新时间:2023-11-29 04:05:10 25 4
gpt4 key购买 nike

我有一个 javascript (node.js) 对象:

const fileObj = {filename: 'file1', filepath: '/file1/path/', flag: true,}

有人告诉我,对于对象,不能保证顺序(与明确排序的数组不同)——所以我可以确定

Object.values(fileObj)

将以与吐出的键相同的顺序吐出值

Object.keys(fileObj)

这很关键的原因是在 Node 中使用 mysql 转义值:

const mysql = require('mysql');
const connection = mysql.createConnection(credentials);

const fileObj = {filename: 'file1', filepath: '/file1/path/', flag: true,}
const cols = Object.keys(fileObj).join(', ');
const placeholder = Object.keys(fileObj).fill('?').join(', ');

const sql = `INSERT INTO table1 (${cols}) VALUES (${placeholder})`;

connection.query(sql, Object.values(fileObj), function (error, results, fields) {
// Do stuff
});

这将创建一条 SQL 语句:

sql = INSERT INTO table1 (filename, filepath, flag) VALUES (?, ?, ?);

理论上与转义值相结合:

connection.query(sql, ['file1', '/file1/path/', true], function...

但如果它们的顺序不一样,游戏就结束了......


相关问题:

Does JavaScript Guarantee Object Property Order? (Javscript 不保证顺序......除非你可以期待顺序......)

Does ES6 introduce a well-defined order of enumeration for object properties? (有时保证顺序......但不是用 Object.keys?)

这是什么?我应该使用什么来确保我的 mySQL 转义值与我的 mySQL 列名的顺序相同?

最佳答案

根据多个其他用户的建议,我会使用 Object.entries

然后您可以选择继续提取键和值,这次使用保证在您的 SQL 语句中使用的顺序。

var attributes = {
a: 'A',
f: 'F',
c: 'C',
b: 'B',
e: 'E',
d: 'D',
};

const entries = Object.entries(attributes);
const keys = entries.map(entry => entry[0]);
const values = entries.map(entry => entry[1]);

console.log(keys, values);

关于Javascript 对象偏执狂(我可以依赖元素的顺序吗),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48697377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com