Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果为true,则返回对象中的键列表_Javascript_Reactjs - Fatal编程技术网

Javascript 如果为true,则返回对象中的键列表

Javascript 如果为true,则返回对象中的键列表,javascript,reactjs,Javascript,Reactjs,我想在React中创建自己的脚本,如果对象的键为true,则添加类名。 现在我在循环中使用for..in,但是我只得到了我的一个真语句 let btnClass = this._classNames({ 'btn': true, 'active': true, }); _classNames(value) { let classy; for (var i

我想在React中创建自己的脚本,如果对象的键为true,则添加类名。 现在我在循环中使用for..in,但是我只得到了我的一个真语句

    let btnClass = this._classNames({
          'btn': true,
          'active': true,      
    });

    _classNames(value) {
                let classy;
                for (var i in value) {
                    if (value[i] === true) {
                        classy = i;             
                    }           
                } 
                return classy;      
            }
    }
如何返回全部正确的密钥列表?这里也适用于这些场景,首先使用
Object.keys()
创建所有键的
数组
,然后使用该数组过滤掉键

这样写:

_classNames(value) {
    return Object.keys(value).filter(el => value[el])             
}
检查工作代码段:

函数\u类名(值){
返回Object.keys(value).filter(el=>value[el])
}
var obj={a:true,b:false,c:true,d:false,f:true};

log(_classNames(obj))根据CodePen演示,您可能希望返回一个字符串,其中包含由空格分隔的值为true的对象键。试试这个:

_classNames(value) {
            let classy = [];
            for (var i in value) {
                if (value[i] === true) {
                    classy.push(i);             
                }           
            } 
            return classy.split(" ");   
        }
}

棒 极 了!谢谢!你让我开心!很高兴,这有帮助:)