5.3 KiB
setmap
选择
-
下面哪个不是set的方法 A.add B.delete C.has D.get 答案 D
-
下面代码执行的结果为
let set = new Set([1, 2, 3, 4, 4]);
set.add(5)
set.add(6)
set.add(5)
console.log(set.size)
A.8 B.5 C.6 D. 4 答案 C
- 下面代码执行的结果为
let set = new Set([1, 2, 3, 4, 4]);
set.set(5)
set.add(6)
set.add(5)
console.log(set.size)
A.报错 B.5 C.6 D. 4 答案 A
- 下面代码执行的结果为
var mySet = new Set([1, 2, 3, 4, 4]);
console.log([...mySet]);
A.[1, 2, 3, 4, 4] B.[1, 2, 3, 4] C.1, 2, 3, 4, 4 D.[] 答案 B
- 下面代码的执行结果为
var myMap = new Map();
var keyObj = {},
myMap.set(keyObj, "和键 keyObj 关联的值");
console.log(myMap.get(keyObj));
console.log(myMap.get({}));
A."和键 keyObj 关联的值" {} B.报错 什么都不出 C.undefined null D."和键 keyObj 关联的值" undefined 答案 D 解析 因为 keyObj !== {}
- 下面代码的执行结果为
var myMap = new Map();
var keyFunc = function () {}, // 函数
myMap.set(keyFunc, "和键 keyFunc 关联的值");
console.log(myMap.get(keyFunc)); // "和键 keyFunc 关联的值"
console.log(myMap.get(function() {})) // undefined, 因为 keyFunc !== function () {}
A."和键 keyFunc 关联的值" "和键 keyFunc 关联的值" B.报错 什么也不出
C."和键keyFunc 关联的值" undefined D.undefined undefined
答案 C
- 下面代码的执行结果为
var myMap = new Map();
myMap.set(NaN, "not a number");
console.log(myMap.get(NaN)); // "not a number"
var otherNaN = Number("foo");
console.log(myMap.get(otherNaN)); // "not a number"
A. 8.
填空
- 下面代码执行后 size的值打印出来是
let s = new Set();
s.add([1]);
s.add([1]);
console.log(s.size);
答案 2 解析: 这个问题类似于问这个:
let a = [1]; let b = [1]; console.log(a === b); // false
简单的说就是a和b是两个数组,两个引用对象,怎么可能相等呢?所以对于set来说,这俩不重复,所以是2!
- 下面代码执行后 con的值打印出来是 答案 undefined 解析 因为set的时候用的数组[1]和get的时候用的数组[1]是分别两个不同的数组,只不过它们元素都是1。它们是分别定义的两个数组,并不是同一个值。
let map = new Map();
map.set([1],"ES6系列");
let con = map.get([1]);
console.log(con);
-
用 声明一个set结构 答案 new Set
-
通过 可以实现对set结构中元素的遍历
答案 for of foreach
- 下面代码执行的结果为
var first = new Map([[1, 'one'], [2, 'two'], [3, 'three'],]);
var second = new Map([[1, 'uno'], [2, 'dos']]);
var merged = new Map([...first, ...second]);
console.log(merged)
答案 { 1 → "uno", 2 → "dos", 3 → "three" } 解析 合并两个 Map 对象时,如果有重复的键值,则后面的会覆盖前面的,对应值即 uno,dos, three
- 下面代码执行的结果为
var myMap = new Map();
var keyString = "a string";
myMap.set(keyString, "和键'a string'关联的值");
var jieguo = myMap.get(keyString); // "和键'a string'关联的值"
var jieguo1 = myMap.get("a string");
console.log(jieguo,jieguo1)
答案 和键'a string'关联的值 和键'a string'关联的值
map 遍历生成函数及其作用 答案 Map.prototype.keys():返回键名的遍历器。 Map.prototype.values():返回键值的遍历器。 Map.prototype.entries():返回所有成员的遍历器。 Map.prototype.forEach():遍历 Map 的所有成员。
简答题
-
maps和objects的区别 答案 一个 Object 的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值。 Map 中的键值是有序的(FIFO 原则),而添加到对象中的键则不是。 Map 的键值对个数可以从 size 属性获取,而 Object 的键值对个数只能手动计算。 Object 都有自己的原型,原型链上的键名有可能和你自己在对象上的设置的键名产生冲突。
-
WeakSet和Set的区别 答案
WeakSet的成员只能是对象,而不能是其他类型的值 WeakSet中的对象都是弱引用,即垃圾回收机制不考虑WeakSet对该对象的引用,也就是说,如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还存在于WeakSet之中。这个特点意味着,无法引用WeakSet的成员,因此WeakSet是不可遍历的。
- set 和 map的区别 答案 Set是一种类似数组的集合类型,它与数组不同的是,不允许存在重复数据;常用操作方法有:add,delete,has,clear等;遍历使用forEach;
Map是一种类似对象的集合类型,它与对象不同的是,key可以接受对象类型,常用的操作方法有:set,get,has,delete等;遍历使用forEach
-
定义一个函数 将传入的数组元素去重后返回(可以写多种方法) 详见 https://segmentfault.com/a/1190000016418021?utm_source=tag-
-
用 foreach 和 for of 分别遍历下面这个set var myMap=new Map() myMap.set(0, "zero"); myMap.set(1, "one");
var first = new Map([[1, 'one'], [2, 'two'], [3, 'three'],]); var second = new Map(1, 'uno'], [2, 'dos'); var merged = new Map([...first, ...second]);
6.module、import