【问题标题】:How do I clear element values from an array in typescript?如何从打字稿中的数组中清除元素值?
【发布时间】:2018-10-20 09:43:06
【问题描述】:

这里有一个数组。

  let dataList=  [
  {
    "VersionId": 475,
    "DocumentVersionFieldId": 1105,
    "VariantId": 4597,
    "ElementId": 1019,
    "FuelTypeId": 4,
    "VariantStructureWeek": "201817",
    "SalesVersion": "1",
    "MarketingCode": "1",
    "Option": "1",
    "SequenceNo": 1,
    "VariantExtendedValue": [],    
    "cocVariantElementValues": [
      {
        "VersionId": 475,
        "DocumentVersionFieldId": 1105,
        "VariantId": 4597,
        "ElementId": 1017,
        "ElementVariantId": 9548,
        "VariantValue": "uy",
        "IsRecordVisible": false,
        "cocElementLanguageDataCollection": [
          {
            "ElementVariantId": 9548,
            "LanguageId": 0,
            "LanguageCode": "EN",
            "TranslationValue": "uy"
          },
          {
            "ElementVariantId": 9548,
            "LanguageId": 0,
            "LanguageCode": "AL",
            "TranslationValue": "jh"
          },
          {
            "ElementVariantId": 9548,
            "LanguageId": 0,
            "LanguageCode": "DE",
            "TranslationValue": "hj"
          },          
          {
            "ElementVariantId": 9548,
            "LanguageId": 0,
            "LanguageCode": "UR",
            "TranslationValue": "jh"
          }
        ]
      }
    
    ],
    "isRowDeleted": false,
    "operationIndicators": 0,
    "isMultiLanguage": true,
    "IsRecordVisible": true,
    "isShowUp": false,
    "IsNewRow": false
  }
]

我想从上面的数组中清除下面元素的值。

  • 我想从cocVariantElementValues数组中清除VariantValue元素

  • 我想从cocElementLanguageDataCollection数组中清除TranslationValue元素

这是预期的。

    [
      {
        "VersionId": 475,
        "DocumentVersionFieldId": 1105,
        "VariantId": 4597,
        "ElementId": 1019,
        "FuelTypeId": 4,
        "VariantStructureWeek": "201817",
        "SalesVersion": "1",
        "MarketingCode": "1",
        "Option": "1",
        "SequenceNo": 1,
        "VariantExtendedValue": [],    
        "cocVariantElementValues": [
          {
            "VersionId": 475,
            "DocumentVersionFieldId": 1105,
            "VariantId": 4597,
            "ElementId": 1017,
            "ElementVariantId": 9548,
            "VariantValue": "",//here
            "IsRecordVisible": false,
            "cocElementLanguageDataCollection": [
              {
                "ElementVariantId": 9548,
                "LanguageId": 0,
                "LanguageCode": "EN",
                "TranslationValue": "",//here
              },
              {
                "ElementVariantId": 9548,
                "LanguageId": 0,
                "LanguageCode": "AL",
                "TranslationValue": "",//here
              },
              {
                "ElementVariantId": 9548,
                "LanguageId": 0,
                "LanguageCode": "DE",
                "TranslationValue": "",//here
              },          
              {
                "ElementVariantId": 9548,
                "LanguageId": 0,
                "LanguageCode": "UR",
                "TranslationValue": "",//here
              }
            ]
          }
        
        ],
        "isRowDeleted": false,
        "operationIndicators": 0,
        "isMultiLanguage": true,
        "IsRecordVisible": true,
        "isShowUp": false,
        "IsNewRow": false
      }
    ]

有没有直接的方法,还是我需要循环并手动删除它们?

【问题讨论】:

  • 能否告诉我投反对票的原因?
  • 你可以使用数组foreach来做。
  • @HassanImam 在 ECMascript 6 中没有 foreach 是否可行?
  • @RameshRajendran 希望你能接受我的回答 :)
  • @RameshRajendran 我不期待代码,离开它,我认为这是为了互相帮助,甚至接受我的回答你不会失去任何东西,但我很高兴

标签: javascript arrays typescript ecmascript-6


【解决方案1】:

感谢@ppl

我通过在我的场景中使用多个 .map() 得到它。

dataList.map(function(x) { 
      x.cocVariantElementValues.map(function(y) { 
      y['VariantValue'] = ''; 
      y.cocElementLanguageDataCollection.map(function(z) { 
      z['TranslationValue'] = ''; 
      return z
    });
      return y;
    });
      return x;
    });

成功的片段

let dataList=  [
  {
    "VersionId": 475,
    "DocumentVersionFieldId": 1105,
    "VariantId": 4597,
    "ElementId": 1019,
    "FuelTypeId": 4,
    "VariantStructureWeek": "201817",
    "SalesVersion": "1",
    "MarketingCode": "1",
    "Option": "1",
    "SequenceNo": 1,
    "VariantExtendedValue": [],    
    "cocVariantElementValues": [
      {
        "VersionId": 475,
        "DocumentVersionFieldId": 1105,
        "VariantId": 4597,
        "ElementId": 1017,
        "ElementVariantId": 9548,
        "VariantValue": "uy",
        "IsRecordVisible": false,
        "cocElementLanguageDataCollection": [
          {
            "ElementVariantId": 9548,
            "LanguageId": 0,
            "LanguageCode": "EN",
            "TranslationValue": "uy"
          },
          {
            "ElementVariantId": 9548,
            "LanguageId": 0,
            "LanguageCode": "AL",
            "TranslationValue": "jh"
          },
          {
            "ElementVariantId": 9548,
            "LanguageId": 0,
            "LanguageCode": "DE",
            "TranslationValue": "hj"
          },          
          {
            "ElementVariantId": 9548,
            "LanguageId": 0,
            "LanguageCode": "UR",
            "TranslationValue": "jh"
          }
        ]
      }
    
    ],
    "isRowDeleted": false,
    "operationIndicators": 0,
    "isMultiLanguage": true,
    "IsRecordVisible": true,
    "isShowUp": false,
    "IsNewRow": false
  }
]

let result = dataList.map(function(x) { 
  x.cocVariantElementValues.map(function(y) { 
  y['VariantValue'] = ''; 
  y.cocElementLanguageDataCollection.map(function(z) { 
  z['TranslationValue'] = ''; 
  return z
});
  return y;
});
  return x;
});

console.log(result)

【讨论】:

    【解决方案2】:

    如果不循环遍历所有元素,您将无法做到这一点,但是您可以使用一些快捷方式来代替 for:

    array.map(function(x) { 
      x['VariantValue'] = ''; 
      return x
    });
    

    或者你也可以使用这个,它是 es6 胖箭头函数

    array.map(x=>x['VariantValue']='');
    

    以上代码未经测试,可能存在语法错误。

    【讨论】:

      猜你喜欢
      • 2019-03-02
      • 2018-09-28
      • 2022-10-12
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 2019-07-03
      • 2021-09-01
      • 2018-08-20
      相关资源
      最近更新 更多