我在数组中有一组值,其中每个值都有一个 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/