将数组转换为 Hashmap(键值对)javascript

Convert array to Hashmap (key value pair) javascript

我有一个名为 territory 的数组,其中包含以下内容

我想创建一个哈希图,其中

key是id [领地内每个对象的id属性]

值为整个对象

任何 help/pointers 相同?

谢谢你

您只需遍历数组并将每个元素分配为对象中的 属性:

var hash = {};
var data = [...];
data.forEach(function (it) { hash[it.id] = it; });

如果你可以访问 lodash 库,你可以使用 indexBy 一次转换整个数组:

var data = [...];
var hash = _.indexBy(data, 'id');

underscore 库也有一个 indexBy 方法以相同的方式运行。

嗨,你可以这样做,它会起作用的:

var hashmap = {};

territory.forEach(function(element) {

    if(hashmap[element.id]!==null && hashmap[element.id]!=undefined){
       if(!Array.isArray(hashmap[element.id])){ 
           var tempObj = hashmap[element.id];

           // don't forget to json.stringify your object if you 
           // want to  serialise your hashmap for external use

           hashmap[element.id] = [tempObj];
       }

       hashmap[element.id].push(element);

    }
    else{
        // if you want to serialise your hashmap for external use
        hashmap[element.id] = JSON.stringify(element);
        // if not, you could just do without JSON.stringify
        hashmap[element.id] = element;
    }

});

console.log(hashmap);

您可以查看 mozilla 文档以获取有关 foreach 的更多信息

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

编辑:我更新了代码以避免(脏)id 重复并存储共享相同 id 的对象