Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何有效地用许多静态键/值对填充Javascript对象文字?_Javascript_Object Literal_Static Initialization - Fatal编程技术网

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

如何有效地用许多静态键/值对填充Javascript对象文字?,javascript,object-literal,static-initialization,Javascript,Object Literal,Static Initialization,创建Javascript对象的典型方法如下所示: var map = new Object(); map[myKey1] = myObj1; map[myKey2] = myObj2; 我需要创建这样一个映射,其中键和值都是字符串。我有一个大但静态的对集添加到地图 有没有办法在Javascript中执行类似的操作: var map = { { "aaa", "rrr" }, { "bbb", "ppp" } ... }; 或者我必须为每个条目执行类似的操作: map["aaa"]="rrr

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

var map = new Object();
map[myKey1] = myObj1;
map[myKey2] = myObj2;
我需要创建这样一个映射,其中键和值都是字符串。我有一个大但静态的对集添加到地图

有没有办法在Javascript中执行类似的操作:

var map =  { { "aaa", "rrr" }, { "bbb", "ppp" } ... };
或者我必须为每个条目执行类似的操作:

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

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

JavaScript的对象文字语法,通常用于实例化对象(说真的,没有人使用
新对象
新数组
),如下所示:

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比较挑剔,键和字符串值必须用双引号括起来:

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

它可以与对象文字符号配合使用:

var map = { key : { "aaa", "rrr" }, 
            key2: { "bbb", "ppp" } // trailing comma leads to syntax error in IE!
          }
顺便说一句,实例化数组的常用方法

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" /* etc */ };
尝试一下:

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

在ES2015又称ES6版本的JavaScript中,引入了名为
Map
的新数据类型

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

查看更多信息。

您是否确实尝试了
var-map={{{“aaa”、“rrr”}、{“bbb”、“ppp”}……}如你所问?因为当您在值之前放置一个附加键时,这就可以正常工作<代码>{key:{“aaa”,“rrr”},key1:{“bbb”,“ppp”}
可能重复的@jbabey并不是你提出的问题的副本,但我很确定以前有人问过这个问题;)这是一个名为map的对象,不是map