【问题标题】:Update an array where an object property has a specific value更新对象属性具有特定值的数组
【发布时间】:2020-12-08 14:08:52
【问题描述】:

我正在尝试更新一个对象属性具有特定值的数组。

详情:

我有一个简单的方法 (setMissingFields(model)),它以 model 作为参数。在方法中,我循环对象 (model),并希望在属性设置为 mandatory: true 时更新数组 (missingArray[])。

下面是我的“干净”代码(我尝试过使用if (typeof (value) === 'object') 的各种嵌套循环):

  model = {
    name: { value: '', mandatory: false },
    initials: { value: '', mandatory: false },
    physicalAddress: {
      addressPostalCode: { value: '', mandatory: true },
    },
    postalAddress: {
      address1: { value: '', mandatory: true },
    },
  };

  setMissingFields(model) {
    for (const [key, value] of Object.entries(model)) {

      if (value === '') {
        this.missingArray.push({ FieldName: key, ExpectedValue: ''});
      }
      else if (typeof (value) === 'object') {
        this.setMissingFields(value);
      }
    }
  }

【问题讨论】:

  • 从给定的 json 数据中你想要的预期输出(missingArray)是什么?

标签: javascript arrays angular typescript


【解决方案1】:

您可以尝试以下循环方法来获得所需的输出。 在每次循环迭代中,它都会检查该对象中是否存在强制字段,如果存在,那么该字段的值是什么,如果值为 true,那么我也在验证 value 字段包含什么。

如果它满足所有条件,我将在新数组中添加该字段。

如果没有,那么我将递归调用当前对象的相同方法。

var resultset = [];
var model = {
    name: { value: '', mandatory: true },
    initials: { value: '', mandatory: false },
    physicalAddress: {
      addressPostalCode: { value: '', mandatory: true },
    },
    postalAddress: {
      address1: { value: '', mandatory: false },
    },
};

function filterkey(data) {
  if (data){
    for (const [key, value] of Object.entries(data)) {
      var currentValue = value;
      if (value.hasOwnProperty("mandatory") 
        && value["mandatory"]===true && !value["value"]){
        console.log(key,value);
        resultset.push({fieldName:key,expectedValue:''})
      } else {
        filterkey(currentValue);
      }
    }
  }
}

filterkey(model);
console.log(resultset);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 2023-02-26
    • 2020-10-25
    • 1970-01-01
    相关资源
    最近更新 更多