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