我正在使用Angular 6,并且具有可以更改属性值的功能,并且还会在数组存在的情况下将该属性添加到数组。
当属性值是true时
{
"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
}
}
}
最佳答案
我相信您正在寻找的是:
ES6 in operator
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
}
}
}
可以进行优化,但更多取决于您尝试构建的逻辑。