我有一个看起来像这样的对象
const companyObj =
{
Advice_Charge: "B. In service / product cost"
Org_Advisory: "B. 1-3"
Org_Developers: "A. None"
Org_MainCategory: "Business services and sales"
Org_Name: "A1 Orchard Spreading"
Org_Size_Facing: "B. 1-3"
Org_SubCategory: "Contractor - Harvesting and cultivation"
}
我有另一个看起来像这样的对象
const sizeMap = {
'A. None': '11-30',
'B. 1-3': '1-3',
'C. 4-10': '4-10',
'D. 11 - 30': '11-30',
'E. 31 - 100': '31-100',
'F. 100 - 300': '100-300',
'G. 301 - 1000': '301-1000',
'H. 1,000+': '1000 +',
'J. ???': '1-3',
}
我正在尝试使用 sizeMap 更改对象内部的属性之一
我希望 companyObj
看起来像这样
{Org_Size_Facing: '1-3'} // I don't really care about the other properties at this point..
基本上,如果 companyObj.Org_Size_Facing
返回 sizeMap
中的任何字段,sizeMap
应该返回适当的值
我已经尝试过
console.log(
'objAsign',
Object.assign(companyObj.Org_Size_Facing, sizeMap['Org_Size_Facing']),
)
这有点遥远,但我相信你们已经明白了
非常感谢你们能提供的任何帮助
最佳答案
您可以循环遍历 companyObj
的条目(键、值对)并使用 in operator检查该属性是否在 sizeMap
对象中(请注意,它也在原型(prototype)链中查找)。
如果你只需要至少一处特性,那么你可以提前休息。
运行示例
const companyObj = {
Advice_Charge: "B. In service / product cost",
Org_Advisory: "B. 1-3",
Org_Developers: "A. None",
Org_MainCategory: "Business services and sales",
Org_Name: "A1 Orchard Spreading",
Org_Size_Facing: "B. 1-3",
Org_SubCategory: "Contractor - Harvesting and cultivation",
}
const sizeMap = {
'A. None': '11-30',
'B. 1-3': '1-3',
'C. 4-10': '4-10',
'D. 11 - 30': '11-30',
'E. 31 - 100': '31-100',
'F. 100 - 300': '100-300',
'G. 301 - 1000': '301-1000',
'H. 1,000+': '1000 +',
'J. ???': '1-3',
}
for (const [key, val] of Object.entries(companyObj)) {
if (val in sizeMap) {
companyObj[key] = sizeMap[val];
break; // if we dont need to check other properties
}
}
console.log(companyObj)
请注意,我们正在修改原始对象,如果需要,我们也可以创建一个新对象。
关于javascript - 将对象值更改为匹配的映射值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63240845/