Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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中将键值对数组添加到映射中?_Javascript_Arrays_Dictionary - Fatal编程技术网

如何在JavaScript中将键值对数组添加到映射中?

如何在JavaScript中将键值对数组添加到映射中?,javascript,arrays,dictionary,Javascript,Arrays,Dictionary,我有一个键值对数组,其中每个键都有另一个定长数组(即2)作为值。如何将整个数组添加到Map(),而不只是为每对数组执行Map.set(key,value) 我知道,在创建Map()实例时,我可以将类似数组的iterable传递给它,例如:let x=newmap(arr)但根据文档,IE 11中不支持这一点。那么,谁能帮我找到一个替代的实现方案呢 最后,我只希望能够使用字符串键访问这两个值。如果有其他方法可以实现,请指导我 以下是一个例子: 我创建了一个键值映射数组,如下所示: let arr

我有一个键值对数组,其中每个键都有另一个定长数组(即2)作为值。如何将整个数组添加到
Map()
,而不只是为每对数组执行
Map.set(key,value)

我知道,在创建
Map()
实例时,我可以将类似数组的iterable传递给它,例如:
let x=newmap(arr)但根据文档,IE 11中不支持这一点。那么,谁能帮我找到一个替代的实现方案呢

最后,我只希望能够使用字符串键访问这两个值。如果有其他方法可以实现,请指导我

以下是一个例子:

我创建了一个键值映射数组,如下所示:

let arr = [
        ['ar', ['cl', 'bl']],
        ['bs', ['kl', 'ml']],
        ['cs', ['rk', 'uk']],
        ['da', ['mk', 'ak']]
    ];
let map = new Map(arr); // This isn't working. 

谢谢。

如果需要支持未实现
映射的浏览器,请使用普通对象,其中第一个数组项将是键和第二个(子数组)值:

或ES2015方法(在IE11中不起作用):

如果您想通过字符串键访问子数组,那么无论如何都必须从数组中转换它

如果要使用
Map
,则(除了修复数组定义中的打字错误外),您将通过Map.prototype.get函数提取内容:

var map = new Map(arr);
console.log(map.get('bs'));
如果不想创建新对象,另一种方法可以是使用Array.filter:

arr.filter(function (item) { return item[0] === 'ar' })[0][1];
arr.filter((item) => item[0] === 'ar')[0][1]; // ES2015
(可能包装在函数中)

您可以使用对象

let obj = 
{ ar:['cl', 'bl'],
  bs:['kl', 'ml'],
  cs:['rk', 'uk'],
  da:['mk', 'ak']
};
console.log(obj['bs'][1]); // displays 'ml'

如果我没有钥匙在物体里。我如何处理这种情况?不知道你的意思是什么,比如只使用子数组而不是
['ar',['cl','bl']]
?然后将其保留为一个普通数组,您可以从中通过索引进行选择,或者您可以将其转换为一个对象,例如,将第一项设置为键,如
{cl:['cl',bl',kl:['kl',ml']}
arr.filter(function (item) { return item[0] === 'ar' })[0][1];
arr.filter((item) => item[0] === 'ar')[0][1]; // ES2015
let obj = 
{ ar:['cl', 'bl'],
  bs:['kl', 'ml'],
  cs:['rk', 'uk'],
  da:['mk', 'ak']
};
console.log(obj['bs'][1]); // displays 'ml'