Angular 5 - Как построить объект с несколькими ключами и значениями - PullRequest
1 голос
/ 30 января 2020

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

const codeRed = this.orderInProgressCmsModel.orderStatusColorRed.split(",");
const codeGreen = this.orderInProgressCmsModel.orderStatusColorGreen.split(",");

const testObj = { colorName: "", colorCodes: []};

Я делаю следующее, чтобы добавить информацию к самому объекту:

testObj.colorName = "red";
testObj.colorCodes = codeRed;
testObj.colorName = "green";
testObj.colorCodes = codeGreen;

Делая это таким образом, вы добавите только два последних в мой объект в качестве его перезаписи.

Цель состоит в том, чтобы я пытался провести рефакторинг следующего кода, чтобы избежать использования стольких if, и пытался получить тот же результат с более логичным подходом, если это возможно:

if(codeRed.some(s => s.includes(code))){
  this.orderStatusColor = JSON.parse('{"color": "red"}');
}

if (codeGreen.some(s => s.includes(code))){
  this.orderStatusColor = JSON.parse('{"color": "green"}');
}

if (codeBlack.some(s => s.includes(code))){
  this.orderStatusColor = JSON.parse('{"color": "black"}'); 
}

Ответы [ 2 ]

0 голосов
/ 30 января 2020

Хорошо, подумав немного больше о том, что мне действительно нужно, это Массив объектов, поэтому я сделал следующее:

const testObj: Array<{ colorName: string, colorCodes: string[] }> = [
      { "colorName": "red", "colorCodes": codeRed },
      { "colorName": "green", "colorCodes": codeGreen },
      { "colorName": "black", "colorCodes": codeBlack }
    ];

Таким образом, я получил это:

(3) [{…}, {…}, {…}]
0:
    colorName: "red"
    colorCodes: (3) ["2", "3", "8"]
__proto__: Object
1:
    colorName: "green"
    colorCodes: (3) ["0", "1", "7"]
__proto__: Object
2:
    colorName: "black"
    colorCodes: (4) ["4", "5", "6", "9"]
__proto__: Object
length: 3
__proto__: Array(0)
0 голосов
/ 30 января 2020

Сделать testObj массивом и pu sh значениями к нему, как показано ниже:

const testObj = [];
let itemToPush = {colorName: 'red', colorCodes: 'color-code'}

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