💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
https://codeday.me/bug/20170602/18962.html 我试图做同样的事情,那篇文章,唯一的问题是,我不知道什么是键和值是前期。所以我需要能够动态添加键和值对,我不知道该怎么做。 有谁知道如何创建该对象和动态添加键值对? 我试过了: ``` var vars = [{key:"key", value:"value"}]; vars[0].key = "newkey"; vars[0].value = "newvalue"; ``` 但这不工作。 ``` var dict = []; // create an empty array dict.push({ key: "keyName", value: "the value" }); // repeat this last part as needed to add more key/value pairs ``` 基本上,你正在创建一个具有2个属性(称为key和value)的对象常量,并将它(使用push())插入数组。 编辑:所以差不多5年后,这个答案是downvote,因为它不是创建一个“正常”的JS对象字面量(aka地图,aka哈希,aka字典)。 然而,它创建了OP要求的结构(并且在另一个问题链接到的示例),它是一个对象字面量数组,每个都有键和值属性。不要问我为什么需要这种结构,但它是被要求的。 但是,如果你想在一个纯JS对象 – 而不是结构OP要求 – 见tcll’s answer,虽然如果你只有简单的键是有效的JS名称的括号符号是一个有点麻烦。你可以这样做: ``` var dict = { key1: "value1", key2: "value2" // etc. }; ``` 或者在创建对象后使用常规点表示法设置属性: ``` var dict = {}; dict.key1 = "value1"; dict.key2 = "value2"; // etc. ``` 你需要括号符号,如果你有键在其中有空格,特殊字符或类似的东西。例如: ``` var dict = {}; // this obviously won't work dict.some invalid key (for multiple reasons) = "value1"; // but this will dict["some invalid key (for multiple reasons)"] = "value1"; 如果您的键是动态的,您还需要括号符号: dict[firstName + " " + lastName] = "some value"; ``` 请注意,键(属性名称)始终是字符串,非字符串值将在用作键时强制转换为字符串。例如。 Date对象转换为其字符串表示形式: ``` dict[new Date] = "today's value"; // => { // "Sat Nov 04 2016 16:15:31 GMT-0700 (PDT)": "today's value" // } ```