我有一个对象,看起来像这样
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']),
)这太离谱了,但我相信你们已经明白了
将非常感谢你们能提供的任何帮助
发布于 2020-08-04 14:06:47
您可以遍历companyObj的条目(键、值对),并使用in operator检查该属性是否在sizeMap对象中(请注意,它也在原型链中)。
如果您只需要至少一个属性,那么您可以提前中断。
运行示例
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)
请注意,我们正在修改原始对象,如果需要,我们还可以创建一个新对象。
发布于 2020-08-04 14:09:46
您可以使用for.. in循环来完成此操作
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(let key in companyObj) {
if(companyObj[key] in sizeMap) {
let val = companyObj[key];
companyObj[key] = sizeMap[val];
}
}
console.log(companyObj);
发布于 2020-08-04 13:53:09
如果你想覆盖你的原始对象,你可以这样做:
if(sizeMap.hasOwnProperty(companyObj.Org_Size_Facing)){
companyObj.Org_Size_Facing = sizeMap[companyObj.Org_Size_Facing]
}
否则,您可以创建一个新对象:
let newObj = {};
if(sizeMap.hasOwnProperty(companyObj.Org_Size_Facing)){
newObj.Org_Size_Facing = sizeMap[companyObj.Org_Size_Facing]
}
console.log(newObj);
https://stackoverflow.com/questions/63240845
复制相似问题