我将id作为键和整个对象映射为值。我希望通过键从map获取对象,但它返回未定义的值。怎么了?
var arr = [ { id: '1', value:'value1'}, { id: '2', value:'value2'}, { id: '3', value:'value3'}];
//using lodash
var idsMap = new Map(_.chain(arr).indexBy('id').mapValues(this));
idsMap.get(1); // return undefined
idsMap.get('1') // return undefined
var idsMap2= new Map(arr.map((el) => [el.id, el]));
idsMap2.get(1); // return undefined
idsMap2.get('1') // return undefined
答案 0 :(得分:1)
第二个对我有用:
var arr = [ { id: '1', value:'value1'}, { id: '2', value:'value2'}, { id: '3', value:'value3'}];
var idsMap2 = new Map(arr.map(function(el) { return [el.id, el] }));
console.log(idsMap2.get('2'));
https://jsfiddle.net/yxdug5j1/
索引当然是string
类型答案 1 :(得分:0)
您创建地图对象所遵循的方法并不适用于所有浏览器。尝试以下代码。
var arr = [{ id: '1', value: 'value1' }, { id: '2', value: 'value2' }, { id: '3', value: 'value3'}];
var idsMap = new Map();
arr.forEach(function (item, index, array) {
idsMap.set(item.id, item);
});