Map get(key) return undefined

Map get(key) return undefined

本文关键字:return undefined key get Map      更新时间:2023-09-26

我将id映射为键,将整个对象映射为值。我想从mapbykey获取object,但它返回未定义值。怎么了?

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

第二个适合我:

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/

索引当然是字符串类型

您所采用的创建map对象的方法并不是在所有浏览器中都有效。试试下面的代码:

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