JS:跟踪唯一键/值配对的最佳方法



我正在遍历字体数据的对象,并希望将它们的postscript名称和样式作为键值对进行推送或添加。postscript名称将始终是postscript的常规版本,因此我需要跟踪它的样式。例如,我希望我的数据结构看起来像:

[
{ "Arial-MT", "Bold" },
{ "Arial-MT", "Regular"}
]

不过,在迭代时,如果我遇到另一个postscript_name,它是Arial-MT,样式是BoldRegular,我不想将它添加到我的数据对象中。对此,最干净的方法是什么?

使用包含字符串的Sets的对象。

const styles = {
"Ariel-MT": new Set(["Bold", "Regular"])
};
postscript_data.forEach(([postscript_name, postscript_style]) => {
if (styles[postscript_name]) {
styles[postscript_name].add(postscript_style);
} else {
style[postscript_name] = new Set([postscript_style])
}
});

我已经更正了您作为对象数组提供的数据结构:

const data = [
{ "Arial-MT": "Bold" },
{ "Arial-MT": "Regular"},
{ "Arial-MT": "Bold" },
{ "Arial-MT": "Regular"},
];
let visited = [];
let result = [];
for(const obj of data){
const [k,v] = Object.entries(obj)[0];
if(!visited.includes(`${k}_${v}`)){
const new_obj = {}
new_obj[k] = v;
result.push(new_obj);
visited.push(`${k}_${v}`);
}
}
console.log(result)

相关内容

最新更新