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

时间:2017-05-19 10:17:29

标签: javascript reactjs

我想在React中创建自己的脚本,如果对象的键为true,则添加className。 现在我使用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;      
            }
    }

如何返回真实的密钥列表?此外codepen

2 个答案:

答案 0 :(得分:2)

Array.prototype.filter()适用于这些情况,首先使用array创建所有密钥的Object.keys(),然后使用filter来过滤密钥。

像这样写:

_classNames(value) {
    return Object.keys(value).filter(el => value[el])             
}

检查工作代码段:



function _classNames(value) {
    return Object.keys(value).filter(el => value[el])   
}

var obj = {a: true, b: false, c: true, d: false, f: true};

console.log(_classNames(obj));




答案 1 :(得分:1)

根据您的CodePen演示,您需要返回一个字符串,其中包含对象的键,其值由空格分隔。试试这个:

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