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

JavaScript:将对象数组转换为hashmap

季小云
2023-03-14

我在数组中有一组值,每个值都有一个IDLABEL

一旦我有了值数组和类型控制台value[0]value[1],输出是:

value[0] 
Object {ID: 0, LABEL: turbo}

value[1] 
Object {ID: 1, LABEL: classic}

如何将这些值存储在哈希映射中,如键值(ID-LABEL)对,并将其存储在json中?

共有3个答案

卓星波
2023-03-14

您可以使用foreach方法

> var hmap = {};
undefined
> var value = [{ID: 0, LABEL: "turbo"}, {ID: 1, LABEL: "classic"}]
undefined
> value.forEach(function(element){
... hmap[element.ID] = element.LABEL;
... });
> hmap
{ '0': 'turbo', '1': 'classic' }

或者

var value = [{ID: 0, LABEL: "turbo"}, {ID: 1, LABEL: "classic"}]
var hmap = {};
value.forEach(function(element){
    hmap[element.ID] = element.LABEL;
});
console.log(hmap);
秦宁
2023-03-14

您可以迭代数组中的每个项,并使用IDproeprty作为javascript对象,使用标签作为

var value = [{ID: 0, LABEL: "turbo"}, {ID: 1, LABEL: "classic"}];

let theNewMap = {};
for(var i = 0; i < value.length; i++) {
  theNewMap[value[i].ID] = value[i].LABEL;
}

// theNewMap Should now be a map with 'id' as key, and 'label' as value
console.log(JSON.stringify(theNewMap ))
董子平
2023-03-14

这可以通过在值数组(即数据)上调用reduce来实现,以获得所需的哈希映射(其中ID是键,值是相应的标签):

js lang-js prettyprint-override">const data = [
{ID: 0, LABEL: 'turbo'},
{ID: 1, LABEL: 'classic'},
{ID: 7, LABEL: 'unknown'}
];

const hashMap = data.reduce((result, item) => {
  return { ...result, [ item.ID ] : item.LABEL };
}, {});

const hashMapJson = JSON.stringify(hashMap);

console.log('hashMap', hashMap);
console.log('hashMapJson', hashMapJson);
 
/*
More concise syntax:
console.log(data.reduce((result, { ID, LABEL }) => ({ ...result, [ ID ] : LABEL }), {}))
*/
 类似资料:
  • 问题内容: 转换的最佳方法是什么: 至: 问题答案: ECMAScript 6引入了易于填充的内容: 该方法用于将所有可枚举的自身属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。 数组的自身属性不会被复制,因为它无法枚举。 另外,您可以使用ES6 传播语法来达到相同的结果:

  • 问题内容: 我正在尝试将数组转换为对象,并且我快到了。 这是我的输入数组: 这是我当前的输出对象: 这是我想要的输出对象: 这是我当前的代码: 问题答案: 你不能那样做。 不是有效的JavaScript对象。 javascript中的对象是键值对。看看你的情况如何,然后是冒号,然后是数字?的是,号码是的。 如果执行此操作,则将无法访问属性。 这是Firefox控制台的结果:

  • 我有一个包含这些键值对的对象。这个对象来自我调用的API: 简单地说,它是一个数字对象,我想要的输出是(一个简单的数组): 我试过Object。值和对象。键仍然将其转换为对象。有什么帮助吗?

  • 问题内容: 假设我有一个像这样的数组 但我想将其转换为这样的对象: 能做到吗?我尝试过的所有方法都只会获得最后一个键值对。 问题答案: 如果您使用的是ES6或更高版本:

  • 问题内容: 转换的最佳方法是什么: 至: 问题答案: ECMAScript 6引入了易于填充的内容: 该方法用于将所有可枚举的自身属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。 数组的自身属性不会被复制,因为它无法枚举。 另外,您可以使用ES6 传播语法来达到相同的结果: