Map get(key)返回undefined

时间:2015-08-05 07:26:33

标签: javascript

我将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

2 个答案:

答案 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);
        });