javascript - 将对象值更改为匹配的映射值

标签 javascript oop object ecmascript-6

我有一个看起来像这样的对象

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/

相关文章:

javascript - javascript中最合适的全局变量?

java - C++ 中的多态性和继承

ios - 如何在 IOS 中平滑地缩放图层以将对象保留在屏幕上?

javascript - 是否存在弹出窗口? (javascript)

javascript - 完全 JavaScript Web 堆栈 - 中间件、网络服务器、数据库建议?

javascript - 最新 chrome 中的类私有(private)方法

php - php中的常量类

c# - 学习TDD,总是陷入循环依赖

javascript - 对象变成数组

JavaScript : problem with regular expression