我想在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
答案 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(" ");
}
}