【问题标题】:Create an array and execute a function创建一个数组并执行一个函数
【发布时间】:2020-01-17 16:38:14
【问题描述】:

我正在使用 Angular 6,并且具有可以更改属性值并在数组存在时将属性添加到数组中的功能。

当属性值为真时

{
  "myArray": ["property1"],
  "properties": {
    "property1": {
      "value": true
    },
    "property2": {
      "value": false
    }
  }
}

但是当我尝试更改属性的值时,如果不存在数组,则会出现数组未定义错误

{
  "properties": {
    "property1": {
      "value": false
    },
    "property2": {
      "value": false
    }
  }
}

如何添加回数组并执行与存在数组时相同的方法

喜欢

{
  "myArray": ["property2"],
  "properties": {
    "property1": {
      "value": false
    },
    "property2": {
      "value": true
    }
  }
}

【问题讨论】:

  • 这不是有效的 JSON。
  • 你能发布你得到错误的代码吗?
  • 正如@Fallenreaper 所说,这不是有效的JSON。你的意思是最外面的大括号是括号吗?
  • 这与 Angular 没有任何关系。基本上,如果属性不存在,则将其添加为空数组。

标签: javascript arrays angular frontend


【解决方案1】:

我相信您正在寻找的是:

  1. ES6 in operator
  2. Array.isArray()

所以它可以构建类似的东西:

const data = {
  "properties": {
    "property1": {
      "value": false
    },
    "property2": {
      "value": false
    }
  }
};

// iterate over keys
for (const property in data.properties) {
  // if value is true
  if (data.properties[property].value) {
    if (Array.isArray(data.myArray)) {
       // property is a string (key)
       data.myArray.push(property);
    } else {
      // not an array do something else
    }
  } 
}

有可能对其进行优化,但更多取决于您尝试构建的逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多