Заполнить пустой объект частью данных из другого объекта JavaScript - PullRequest
0 голосов
/ 19 ноября 2018

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

myObj = {
 myObjName = null;
 myObjType = null;
 myObjOcc = null;
}

И есть объект с объектами, представленными так:

mainObj = {
    "Ob1": {
        "id": 1,
        "name": "Ob1",
        "properties": {
            "attName": "A1",
            "attType": "string",
            "attOccurance": "minOccurs="1""
        },
    },
    "Ob2": {
         "id": 101,
         "name": "Ob2",
         "properties": {
             "attName": "B1",
             "attType": "string",
             "attOccurance": "minOccurs="1""
         },
     }
     "Ob3": {
          "id": 10001,
          "name": "Ob3",
          "properties": {
              "attName": "C1",
              "attType": "string",
              "attOccurance": "minOccurs="1""
              },
       }
}

Я должен вставить данные изобъекты в mainObj до myObj .

Предполагается, что отображение будет следующим:

myObjName = attName
myObjType = attType
myObjOcc = attOccurance

Необходимо учитывать еще одну вещь id в mainObj, потому что Ob2 должен быть вложен в Ob1 , а Ob3 должен быть вложен в Ob2

Итак, myObj должен выглядеть следующим образом:

myObj = {
    "Ob1": {
        "myObjName": "A1",
        "myObjType": "string",
        "myObjOcc": "minOccurs="1""
        "Ob2": {
            "myObjName": "B1",
            "myObjType": "string",
            "myObjOcc": "minOccurs="1""
            "Ob3": {
                "myObjName": "C1",
                "myObjType": "string",
                "myObjOcc": "minOccurs="1""
            }
        }
   }
}

У меня есть эта часть в коде, которая определяет, какой уровень является каждым объектом:

for each(var oneObj in mainObj){
    .
    .
    switch (true) {
                 case  oneObj.id < 100: levelId=1; break;
                 case  oneObj.id < 10000: levelId=2; break;
                 case  oneObj.id < 1000000: levelId=3; break;
    }
    .
    .
}

Пожалуйста, еслиКто-нибудь может мне помочь, как я могу это сделать?

1 Ответ

0 голосов
/ 19 ноября 2018

Вы говорите, что объекты выглядят ужасно, как JSON. Однако, вот как вы добьетесь того, что, как вы говорите, вы хотите, чтобы результат был.

// var myObj = {};
// for (key in mainObj) {
//   const name = mainObj[key].name
//   myObj[name] = {
//     myObjName: mainObj[key].properties.attName,
//     myObjType: mainObj[key].properties.attType,
//     myObjOcc: mainObj[key].properties.attOccurance
//   }
// }

// console.log(myObj)

var mainObj = {
    Ob1: {
        id: 1,
        name: "Ob1",
        properties: {
            attName: "A1",
            attType: "string",
            attOccurance: 'minOccurs="1"'
        },
    },
    Ob2: {
        id: 101,
        name: "Ob2",
        properties: {
            attName: "B1",
            attType: "string",
            attOccurance: 'minOccurs="1"'
        },
    },
    Ob3: {
        id: 10001,
        name: "Ob3",
        properties: {
            attName: "C1",
            attType: "string",
            attOccurance: 'minOccurs="1"'
        },
    }
}

var myObj = {};
for (key in mainObj) {
  const name = mainObj[key].name
  myObj[name] = {
    myObjName: mainObj[key].properties.attName,
    myObjType: mainObj[key].properties.attType,
    myObjOcc: mainObj[key].properties.attOccurance
  }
}

console.log(myObj)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...