Javascript-基于对象内部数组中的其他属性设置新属性



以下是我正在使用的数据结构

masterObject: {
Steps: [
{
step: {
required: false,
},
step: {
required: false,
},
step: {
required: false,
},
},
]
}

我想循环遍历Steps数组,并检查每个step对象是否都包含等于false的所需属性。如果所有需要的步骤都是错误的,我想将一个属性附加到的masterObject对象

masterObject.isObjectWithNoRequiredSteps = true;

代码运行后会是这样

masterObject: {
Steps: [
{
step: {
required: false,
},
step: {
required: false,
},
step: {
required: false,
},
},
]
isObjectWithNoRequiredSteps: true
}

如果有一个例子,其中一个所需的step对象为true,我想将新属性设置为false

masterObject.isObjectWithNoRequiredSteps = false;
masterObject: {
Steps: [
{
step: {
required: true,
},
step: {
required: false,
},
step: {
required: false,
},
},
]
isObjectWithNoRequiredSteps: false
}

在更高级别的对象上设置此属性的最佳方法是什么?

Steps数组中的对象具有多个名称相同的属性/键step。这在JavaScript中是不允许的。考虑按以下更改数据结构

masterObject: {Steps: [{ 
step1: { required: false, }, 
step2: { required: false, }, 
step3: { required: false, },
}, ] }

现在,要确定Steps数组中的每个步骤是否为false,请使用以下代码

masterObject.isObjectWithNoRequiredSteps = Object.keys(masterObject.Steps[0]).reduce(function(result, nextStep){
const isRequired = masterObject.Steps[0][nextStep].required; 
return !isRequired && result; 
}, true);

最新更新