开发者社区> 问答> 正文

将对象数组转换为哈希图,由对象的属性值索引

用例

用例是根据提供的字符串或函数将对象数组转换为哈希图,以评估和用作哈希图的键,并将值用作对象本身。使用此方法的常见情况是将对象数组转换为对象的哈希图。

以下是javascript中的一小段代码,用于将对象数组转换为哈希图,并按对象的属性值进行索引。您可以提供一个功能来动态评估哈希映射的键(运行时)。希望这对将来的任何人有帮助。

function isFunction(func){ return Object.prototype.toString.call(func) === '[object Function]'; }

/** * This function converts an array to hash map * @param {String | function} key describes the key to be evaluated in each object to use as key for hasmap * @returns Object * @Example * [{id:123, name:'naveen'}, {id:345, name:"kumar"}].toHashMap("id") * Returns :- Object {123: Object, 345: Object} * * [{id:123, name:'naveen'}, {id:345, name:"kumar"}].toHashMap(function(obj){return obj.id+1}) * Returns :- Object {124: Object, 346: Object} */ Array.prototype.toHashMap = function(key){ var _hashMap = {}, getKey = isFunction(key)?key: function(_obj){return _obj[key];}; this.forEach(function (obj){ _hashMap[getKey(obj)] = obj; }); return _hashMap; }; 您可以在这里找到要点:https://gist.github.com/naveen-ithappu/c7cd5026f6002131c1fa

展开
收起
保持可爱mmm 2020-01-16 15:44:19 434 0
1 条回答
写回答
取消 提交回答
  • 这是相当琐碎的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' }

    问题来源于stack overflow

    2020-01-16 15:44:40
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载