Convert object array to hash map, indexed by an attribute value of the Object

前端 未结 16 2542
忘掉有多难
忘掉有多难 2020-11-28 01:08

Use Case

The use case is to convert an array of objects into a hash map based on string or function provided to evaluate and use as the key in the hash map and val

16条回答
  •  囚心锁ツ
    2020-11-28 01:26

    This is fairly trivial to do with Array.prototype.reduce:

    var arr = [
        { key: 'foo', val: 'bar' },
        { key: 'hello', val: 'world' }
    ];
    
    var result = arr.reduce(function(map, obj) {
        map[obj.key] = obj.val;
        return map;
    }, {});
    
    console.log(result);
    // { foo:'bar', hello:'world' }

    Note: Array.prototype.reduce() is IE9+, so if you need to support older browsers you will need to polyfill it.

提交回复
热议问题