Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.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 如何使用数组作为参数创建新的WeakMap?_Javascript_Weakmap - Fatal编程技术网

Javascript 如何使用数组作为参数创建新的WeakMap?

Javascript 如何使用数组作为参数创建新的WeakMap?,javascript,weakmap,Javascript,Weakmap,我一直在阅读关于WeakMap的MDN文档。 它提到了语法: newweakmap([iterable]) 但当我尝试此操作时,出现了错误: var arr = [{a:1}]; var wm1 = new WeakMap(arr); 未捕获类型错误:用作弱映射键的值无效 你能给我举一个关于如何通过数组实现的例子吗?你需要一个2D数组,比如[[key1,value1],[key2,value2]。因为您没有钥匙,所以在这里使用WeakSet更合适。From Iterable是数组或其他Iter

我一直在阅读关于WeakMap的MDN文档。 它提到了语法:

newweakmap([iterable])

但当我尝试此操作时,出现了错误:

var arr = [{a:1}];
var wm1 = new WeakMap(arr);
未捕获类型错误:用作弱映射键的值无效


你能给我举一个关于如何通过数组实现的例子吗?

你需要一个2D数组,比如
[[key1,value1],[key2,value2]
。因为您没有钥匙,所以在这里使用WeakSet更合适。

From

Iterable是数组或其他Iterable对象,其元素为 键值对(2元素数组)

键必须是对象,值可以是任意值

因此:


文件说:

Iterable是一个数组或其他Iterable对象,其元素是键值对(2元素数组)

{a:1}
是一个对象,而不是2元素数组

再往下看,上面写着:

WeakMaps的键仅属于Object类型

因此,不能在
WeakMap
中使用字符串作为键

尝试:

var obj={a:1};
var-arr=[[obj,1]];
var wm1=新的弱映射(arr);

console.log(wm1.has(obj))
weakmap构造函数接受一组键值对,即两个元素数组。
var o = {a:1};
var arr = [[o, 10]];
var wm1 = new WeakMap(arr);