Javascript JS递归检查对象字段(+嵌套)是否为false/true
我有这样一个目标:Javascript JS递归检查对象字段(+嵌套)是否为false/true,javascript,ecmascript-6,Javascript,Ecmascript 6,我有这样一个目标: const data = { name: 'somename', valid: true, childs: [{ name: 'somename', valid: true }, { name: 'somename', valid: true, childs: [{ name: 'somename', valid: t
const data = {
name: 'somename',
valid: true,
childs: [{
name: 'somename',
valid: true
}, {
name: 'somename',
valid: true,
childs: [{
name: 'somename',
valid: true,
childs: [{
name: 'somename',
valid: false
}]
}]
}]
};
我试图找出检查所有有效键值是否都设置为true的最佳方法。我的对象是不可预测的嵌套限制=>所以我认为递归是一个好主意
但我坚持:如果我需要收集数字或其他任何东西:这很容易做到,但如何处理真/假值
我开始是这样
checkTrueFalse = (data) => {
return ctrl.checkTrueFalseItems(data);
};
checkTrueFalseItems = (dataItem) => {
return dataItem.filter(item => item.enabled).length === dataItem.length;
};
检查我的数据的所有有效字段是否都设置为true/false的最佳方法是什么?如果所有“有效”字段均为true=>结果应为true,如果不是=>false。您需要在child上执行一个简单的递归循环。使用every可以更容易地获得布尔值 常数数据={ 姓名:'somename', 有效:对, 儿童:[{ 姓名:'somename', 有效:正确 }, { 姓名:'somename', 有效:对, 儿童:[{ 姓名:'somename', 有效:对, 儿童:[{ 姓名:'somename', 有效:假 }] }] }] }; const checkIfAllTrue=obj=>{ 返回obj.valid&!obj.childs | | obj.childs.everycheckiflltrue }
console.LogCheckIfallTrueData此类检查的输出必须是什么?”如果所有“有效”均为“真”,则为“真”?或者什么?如果您使用递归,为什么不检查当前级别上当前项的有效属性呢?@ygorbunkov,以防所有“有效”字段都为true=>结果应该为true,如果不是=>false。@EricSvitok的问题是我卡住了如何编码它。