JavaScript:将对象数组转换为泛型中的 HashMap

标签 javascript

我在数组中有一组值,其中每个值都有一个 ID 和标签。

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

但如果我有以下 json 对象,其中的键略有不同,它当然不会处理。我想知道如何使上述解决方案更通用以处理不同的输入。

const data = [
{K_ID: 0, K_LABEL: 'turbo'},
{L_ID: 1, K_LABEL: 'classic'},
{S_ID: 7, K_LABEL: 'unknown'}
];

最佳答案

您可以将 hashMap 函数更改为如下所示:

const data = [{K_ID: 0, K_LABEL: 'turbo'},{L_ID: 1, K_LABEL: 'classic'},{S_ID: 7, K_LABEL: 'unknown'}];

const hashMap = data.reduce((result, item) => {
    let id
    let label

    Object.keys(item).forEach((key) => {
        if (key.includes('ID')) {
            id = key
        } else if (key.includes('LABEL')) {
            label = key
        }
    })

    return { ...result, [ item[id] ] : item[label] };
}, {});

console.log( hashMap );

这是假设您传递的数据集 (data) 与您提供的示例中的数据集相似。只要 key 包含 ID,它就会使 id 成为 key ,只要 key 包含 LABEL,它就会成为 LABEL 的 key

关于JavaScript:将对象数组转换为泛型中的 HashMap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56759399/

相关文章:

javascript - 制作一个函数来识别单击了哪个按钮

javascript - 当代码需要设备宽度时,ReactDOMServer 如何表现?

javascript - 从 C# 到 JavaScript - 使用类实例

javascript - 关闭编译器错误: JSC_NOT_A_CONSTRUCTOR

javascript - 在循环中,所有数组元素都获取最后一个的值

javascript - 为什么 margin-top 不适用于 <i> 元素?

javascript - AngularJS - 如何从 $compile 获取处理后的 HTML 输出?

javascript - Web Audio 解码音频数据 iOS 上的分块破折号音频

javascript - WordPress 页面内的 p5js 草图

javascript - Three.js:为什么我的鞋子装反了,我该如何摆脱那种疯狂的金属外观?