2017-08-27 32 views
2

我谈论ES6的Set功能。为什么“get”方法不适用于ES6“Set”?

let set = new Set(); 
set.add("1", { Name: "myName", Age: 13 }) 
set.add("2", { Name: "yourName", Age: 14 }) 
console.log(set); 

为了获得一些价值,你必须循环遍历集合并获得值。 Ofcouse我们可以使用has方法在循环之前进行验证。

但是,可能是为了避免一个get方法,其中我们可以通过一键搞定访问的这些值的原因是什么?

+3

什么会得到一组已知元素的目的是什么? –

+0

我改变了这个例子。我们不能使用set作为字典吗?如果是的话,我的意思是'set.get(“2”)'给出的结果是'{Name:“yourName”,Age:14}' – Sreekumar

+3

您是否想过可以使用Map? –

回答

5

你弄错SetMapSet适用于一组唯一值,而不是键/值映射。因此没有“得到”,因为没有什么可以得到;如果你有一个集合中的值,你已经拥有了它。 Map用于键/值映射。

您的示例代码仅将"1""2"添加到集合中,而不是您作为第二个参数传递的对象(第二个参数完全被Set.prototype.add忽略)。

Map,当然,确实get

let map = new Map(); 
 
map.set("1", { Name: "myName", Age: 13 }) 
 
map.set("2", { Name: "yourName", Age: 14 }) 
 
console.log(map.get("1"));

+0

我开始了解地图,但只是想到'Set'可能在检索数据方面有更好的表现,因为这些键可以是唯一的。因此,如果'Set'不能像Map一样存储字典,那么我只能使用'Map' – Sreekumar

+3

@Sreekumar:'Map's **中的键是**唯一的。 –

相关问题