【问题标题】:Angular 5 - How to build an object with several key's and valuesAngular 5 - 如何构建具有多个键和值的对象
【发布时间】:2020-01-30 07:27:27
【问题描述】:

我正在尝试构建一个具有键及其值的对象:

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"}'); 
}

【问题讨论】:

    标签: typescript object if-statement ecmascript-6 angular5


    【解决方案1】:

    使 testObj 成为一个数组并将值推送到它,如下所示:

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

    【讨论】:

      【解决方案2】:

      好吧,经过深思熟虑后,我真正需要的是一个对象数组,所以我做了以下操作:

      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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-18
        相关资源
        最近更新 更多