Как я могу установить свойство в пустой объект, используя для цикла? - PullRequest
0 голосов
/ 22 февраля 2019

это мои данные, которые я получаю через форму.

var subject  = {
"items":[
    {
    "EmailType":"INVITATION",
    "name":"INVITATION",
    "subject":"Welcome to Transcendental Meditation India",
    "from":"noreply.globalwebsite@tm.org",
    "body":"hello",
    "active":true,
    "confidential":false,
    "numberOfDaysToWait":1,
    "sequentialOrder":3
    },
    {
    "EmailType":"Create New",
    "name":"sweeeee",
    "subject":"eeee",
    "from":"swa@mail.com",
    "body":"hello2",
    "active":false,
    "confidential":true,
    "numberOfDaysToWait":1,
    "sequentialOrder":2
    }
    ]}

Я использую цикл для создания другого массива объектов, который выглядит после изменения темы.

"Catitems": [
    {
      "template": {
        "name": "Series 1 email",
        "from": "TEAMGMG",
        "subject": "GROUP2 - SERIES1 - EMAIL",
        "body": "<html><body><strong>My test email</strong></body></html>",
        "confidential": true,
        "active": true
      },
      "sequentialOrder": 1,
      "numberOfDaysToWait": 0,
    }, {
      "template": {
        "name": "Series 2 email",
        "from": "TEAMGMG",
        "subject": "GROUP2 - SERIES2 - EMAIL",
        "body": "<html><body><strong>My test email2</strong></body></html>",
        "confidential": true,
        "active": true
      },
      "sequentialOrder": 2,
      "numberOfDaysToWait": 10,
    }
  ]

Я пытался манипулировать субъектом с помощью этого цикла, но не могу установить свойство.

var Catitems={};
for(var i=0; i<subject.items.length ; i++){
  Catitems[i]["name"]= subject.items[i].EmailType
}
console.log(item);

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Если вы хотите изменить каждый элемент в массиве, вы можете использовать Array.map для сопоставления каждого элемента в массиве с новой структурой obj.

var subject = {
  "items": [{
      "EmailType": "INVITATION",
      "name": "INVITATION",
      "subject": "Welcome to Transcendental Meditation India",
      "from": "noreply.globalwebsite@tm.org",
      "body": "hello",
      "active": true,
      "confidential": false,
      "numberOfDaysToWait": 1,
      "sequentialOrder": 3
    },
    {
      "EmailType": "Create New",
      "name": "sweeeee",
      "subject": "eeee",
      "from": "swa@mail.com",
      "body": "hello2",
      "active": false,
      "confidential": true,
      "numberOfDaysToWait": 1,
      "sequentialOrder": 2
    }
  ]
}

const CartItems = subject.items.map((item) => {
  return {
    name: item.EmailType,
    template: {
      name: item.EmailType,
      from: item.from,
      subject: item.subject,
      body: item.body,
      confidential: item.confidential,
      active: item.active
    },
    sequentialOrder: item.sequentialOrder,
    numberOfDaysToWait: item.numberOfDaysToWait,
  };
});

console.log(CartItems)
0 голосов
/ 22 февраля 2019

Ваш Catitems объявляется как объект , когда он должен быть объявлен как массив :

var Catitems=[];
for(var i=0; i<sobject.items.length ; i++){
    var tempObj = {
        "template":{} //must set this otherwise some other error
    };
    tempObj["template"]["name"] = sobject.items[i].EmailType
    //tempObj["template"]["somethingElse"] = sobject.items[i].somethingElse

    Catitems.push(tempObj);
}
//console.log(item); //not defined btw
console.log(Catitems);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...