JavaScript Map和Set对象都是可迭代的对象.两者都[key, value]成对存储对象.我想知道什么时候用什么?有没有偏好?
Dan*_*ite 46
如果您在讨论ES6类型,它们的数据结构并不相同,即使Set可能使用了Map.
您的定义Map是正确的,但a Set是唯一值的集合,与可能具有重复的数组不同.
var array = [1, 2, 3, 3];
var set = new Set(array); // Will have [1, 2, 3]
assert(set.size, 3);
var map = new Map();
map.set('a', 1);
map.set('b', 2);
map.set('c', 3);
map.set('C', 3);
map.set('a', 4); // Has: a, 4; b, 2; c: 3, C: 3
assert(map.size, 4);
Run Code Online (Sandbox Code Playgroud)
Ana*_*ngh 14
var obj = {};
obj.name= "Anand Deep Singh";
console.log(obj.name); //logs "Anand Deep Singh"
Run Code Online (Sandbox Code Playgroud)
同样在ES6中,我们可以使用常规对象.
var map = new Map();
map.set("name","Anand Deep Singh");
console.log(map.get("name")); //logs "Anand Deep Singh"
Run Code Online (Sandbox Code Playgroud)
但值得注意的是,Map不是使用文字对象语法创建的,而是使用set和get方法来存储和访问数据.
它有一个has方法来检查对象中是否存在键,delete方法删除对象,clear方法清除整个对象.
Set是唯一的值列表.这只是一个独特的清单.
var set = new Set(["a", "a","e", "b", "c", "b", "b", "b", "d"]);
console.log(set); //logs Set {"a", "e", "b", "c", "d"}
Run Code Online (Sandbox Code Playgroud)
无法像数组一样访问集合,它提供与Map相同的方法.
Set当您的数据集需要由唯一值组成时,请使用Map当您有关联数据对时,请使用。您将键映射到值Set:有来自不同组织的人开会。有些人来自同一组织。我们需要组成所有不同组织的列表。为此,我们可以使用一个集合,因为我们只想包含每个组织一次:
const organization = new Set();
organization.add('org1');
organization.add('org2');
organization.add('org3');
organization.add('org1');
organization.add('org3');
organization.add('org1');
for(let org of organization){
console.log(org);
}Run Code Online (Sandbox Code Playgroud)
Map:我们有一包狗,希望为每只狗指定年龄。我们想将每只狗的唯一名称映射到狗的年龄:
const dogs = new Map([['fluffy', 10], ['barkie', 13]]);
dogs.forEach((value, key) => console.log(key, value));Run Code Online (Sandbox Code Playgroud)
与的Map区别是Object什么?
An Object也是键值对的集合,通常可以实现与罐子相同的目的Map(创建键值对)。但是,a Map和an 之间存在一些关键区别Object:
Map内置于Iterable中,这使它可以使用普通JS 无法使用的for of循环或forEach()方法的实现Object。Map在其上具有一些不错的内置方法,prototype这使得使用它非常好。因为al Objects继承自Object.prototypeis可以访问更多有用的方法。例如,size()on方法Map将返回中的键数Map。| 归档时间: |
|
| 查看次数: |
14846 次 |
| 最近记录: |