如何在javascript es6 / 2015中使用已解析对象的唯一键创建地图?

Jos*_*ran 2 javascript json dictionary object ecmascript-6

可以说我收到一个解析的json,如下所示:

[{"a":1},{"a":2},{"a":3}]

键是相同的a

我如何使每个a地图都唯一以使地图可用?”

编辑1

我想要的结果:

let myMap = {}; //I declare my variable
//Then I fetch a json and parse it
fetch(link)
    .then(function(response) {
      return response.json(); //parse the json string
    }).then(function(json) {
      myMap = json; //set it to myMap to be used
}
Run Code Online (Sandbox Code Playgroud)

由于某些原因,我有重复的密钥,尽管你们说json是唯一的。我是否必须myMap先将json字符串设置为,然后仅对其进行解析?

Nin*_*olz 5

基本上,您可以使用Objectas哈希表

var data = [{ "a": 1 }, { "a": 2 }, { "a": 3 }],
    object = Object.create(null);

data.forEach(function (el) {
    object[el.a] = el;
});

console.log(object);
Run Code Online (Sandbox Code Playgroud)

或一个 Map

var data = [{ "a": 1 }, { "a": 2 }, { "a": 3 }],
    map = new Map;

data.forEach(function (el) {
    map.set(el.a, el);
});

console.log(map.get(1));
Run Code Online (Sandbox Code Playgroud)

Map优于Object的优点是,密钥可以是任何东西。密钥不会转换为字符串。映射可以将对象或其他原始值或非原始值作为键。


sch*_*opy 5

此外,如果您有单个值列表或想要确保它是唯一的,您可以使用提供的索引,如下所示:

obj.map((item, index) => 
   ...
)}
Run Code Online (Sandbox Code Playgroud)