当前位置: 首页 > 知识库问答 >
问题:

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

罗业
2023-03-14

用例是将对象数组转换为基于字符串或函数的哈希映射,所提供的字符串或函数用于求值并作为哈希映射中的键和作为对象本身的值。使用这种方法的一个常见情况是将对象数组转换为对象的哈希映射。

下面是JavaScript中的一个小片段,用于将对象数组转换为哈希映射,由Object的属性值索引。您可以提供一个函数来动态(运行时)评估哈希映射的键。希望这对将来的人有帮助。

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

共有1个答案

刘向阳
2023-03-14

这对于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' }
 类似资料:
  • 问题内容: 使用hashmap而不是使用对象类好吗……使用Hashmap…。 并使用对象类..... 请在应用程序运行状况,内存要求等方面告诉我… 问题答案: 这在很大程度上取决于您要实现的目标:为了提高灵活性,哈希映射会更好。但是灵活性是有代价的:哈希映射比具有相同数量的强类型字段的类还要大和慢。 哈希映射比具有相同数量字段的类具有更大的内存占用量 哈希图会强制对基元进行装箱 哈希图的创建和访问

  • 我有[{key1:value1,key2:value2},{key3:value3,key4:value4},...].我想将其转换为{value1:value2,value3:value4}

  • 我想获取一个Javascript对象并将其转换为哈希数组。 以下操作仅获取对象的一个元素并将其转换为数组: 返回: 但是,当我试图创建散列元素来组成数组时,出现了一个错误: 返回: 我做错了什么?

  • 有没有一种简单的方法,使用或或其他方法来转换数组,如下所示: 变成一个简单的数组,该数组填充了前一个数组中包含的对象的一个属性,如下所示:

  • 使用代替和代替 然后在请求属性中添加 但是当我在javascript中检索它时,我得到了jsonObject的值 我在我的项目中已经使用了下面的库,如果需要,可以使用任何新的库

  • 问题内容: 如何将ruby哈希对象转换为JSON?所以我在下面尝试这个例子,它不起作用? 我当时在看RubyDoc,显然对象没有方法。但是我正在阅读Rails支持并且也支持的博客。我可以理解是一个Rails对象,但不是Rails本身,它是一个纯Ruby对象。因此,在Rails中可以执行,但不能在纯Ruby中执行? 问题答案: Ruby的众多优点之一就是可以使用自己的方法扩展现有的类。这称为“类重新