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的问题是我卡住了如何编码它。