将数组转换为 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 的对象
我有一个名为 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 的对象