简体   繁体   中英

How do I clear element values from an array in typescript?

Here I have an array.

  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 } ] 


I want to clear value of the below elements from the above array.

  • I want to clear VariantValue element from cocVariantElementValues array

  • I want to clear TranslationValue element from cocElementLanguageDataCollection array

This below is the expected one.

  [ { "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 } ] 

Is there a straightforward way, or do I need to loop through it and remove them manually?

You can't do this without looping over the all elements, however there are some shortcuts you can use instead of for:

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

Alternatively you can use this too, it is es6 fat arrow function

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

There might be some syntax errors in the above code as it is not tested.

thanks @ppl

I got it by using multiple .map() for my scenario.

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

Successful Snippet

 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) 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM