如何有效地用许多静态键/值对填充Javascript对象文本

How to fill a Javascript object literal with many static key/value pairs efficiently?

本文关键字:填充 Javascript 文本 对象 有效地 许多 静态      更新时间:2023-09-26

创建Javascript对象的典型方法如下:

var map = new Object();
map[myKey1] = myObj1;
map[myKey2] = myObj2;

我需要创建这样一个映射,其中键和值都是String。我有一大组静态的配对要添加到地图中。

有没有任何方法可以在Javascript中执行这样的操作:

var map =  { { "aaa", "rrr" }, { "bbb", "ppp" } ... };

还是我必须为每个条目执行这样的操作:

map["aaa"]="rrr";
map["bbb"]="ppp";
...

基本上,剩下的Javascript代码将在这个映射上循环,并根据"运行时"已知的标准提取值。如果这个循环作业有更好的数据结构,我也很感兴趣。我的目标是最小化代码。

在ES2015中,也就是JavaScript的ES6版本中,引入了一种称为Map的新数据类型。

let map = new Map([["key1", "value1"], ["key2", "value2"]]);
map.get("key1"); // => value1

查看此参考以了解更多信息。

JavaScript的对象字面语法通常用于实例化对象(说真的,没有人使用new Objectnew Array),如下所示:

var obj = {
    'key': 'value',
    'another key': 'another value',
     anUnquotedKey: 'more value!'
};

对于阵列,它是:

var arr = [
    'value',
    'another value',
    'even more values'
];

如果你需要对象中的对象,那也没关系:

var obj = {
    'subObject': {
        'key': 'value'
    },
    'another object': {
         'some key': 'some value',
         'another key': 'another value',
         'an array': [ 'this', 'is', 'ok', 'as', 'well' ]
    }
}

这种能够实例化静态数据的方便方法导致了JSON数据格式。

JSON有点挑剔,键和字符串值都必须用双引号括起来:

{"foo":"bar", "keyWithIntegerValue":123}

它可以很好地使用对象文字表示法:

var map = { key : { "aaa", "rrr" }, 
            key2: { "bbb", "ppp" } // trailing comma leads to syntax error in IE!
          }

Btw,实例化数组的常用方法

var array = [];
// directly with values:
var array = [ "val1", "val2", 3 /*numbers may be unquoted*/, 5, "val5" ];

和对象

var object = {};

你也可以做任何一件事:

obj.property     // this is prefered but you can also do
obj["property"]  // this is the way to go when you have the keyname stored in a var
var key = "property";
obj[key] // is the same like obj.property

尝试一下:

var map = {"aaa": "rrr", "bbb": "ppp"};

尝试此类型脚本

const MAP: Record<string, string> = {
  key1: 'value1'
};
MAP[this.name]

您作为第一个编写的语法无效。您可以使用以下方法实现某些目标:

var map =  {"aaa": "rrr", "bbb": "ppp" /* etc */ };