изменение значений объекта на соответствие сопоставленным значениям - PullRequest
2 голосов
/ 04 августа 2020

У меня есть объект, который выглядит так

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']),
        )

Это далеко не так, но я уверен, что вы, ребята, поняли это

Буду признателен за любую помощь, которую вы можете предложить

Ответы [ 4 ]

1 голос
/ 04 августа 2020

Вы можете сделать это с for.. in l oop

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);
1 голос
/ 04 августа 2020

Вы можете l oop через записи (пары ключ, значение) companyObj и использовать оператор in , чтобы проверить, находится ли свойство в объекте 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)

Обратите внимание, что мы модифицируем исходный объект, мы также можем создать новый, если это требуется.

0 голосов
/ 04 августа 2020
var newMap = sizeMap[companyObj.Org_Size_Facing];
if (newMap != undefined)
    companyObj.Org_Size_Facing = newMap;
0 голосов
/ 04 августа 2020

Если вы хотите перезаписать исходный объект, вы можете сделать это:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...