gpt4 book ai didi

javascript - 将对象数组转换为 HashMap ,由对象的属性值索引

转载 作者:IT老高 更新时间:2023-10-28 13:14:38 25 4
gpt4 key购买 nike

用例

用例是将对象数组转换为基于提供的字符串或函数的 HashMap ,以评估和使用作为 HashMap 中的键,并将值作为对象本身。使用它的一个常见情况是将对象数组转换为对象的 HashMap 。

代码

以下是 JavaScript 中的一个小片段,用于将对象数组转换为 HashMap ,由对象的属性值索引。您可以提供一个函数来动态评估 HashMap 的键(运行时)。

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 hashmap
* @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;
};

您可以在这里找到要点:Converts Array of Objects to HashMap .

最佳答案

这对于 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' }

注意: Array.prototype.reduce() 是 IE9+,所以如果你需要支持旧版浏览器,你需要 polyfill。

关于javascript - 将对象数组转换为 HashMap ,由对象的属性值索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26264956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com