Javascript:比较三个布尔值和return所有真布尔值
Javascript: Compare three booleans and return all true booleans
我有一个方法 getPreferredfood()。它获得三个代表不同食物的布尔值。哪一个是真的,你 return 那些。
getPreferredFood: function (){
var item 1;
var item2 ;
var item3;
//comparison?
return "Preferred food is " (whichever item was true)
}
我不确定如何 return 正确的项目。
将值存储在对象/映射中:
var options = {
a: true,
b: true,
c: false,
};
在该数组上使用 Object.keys
to get the names and use .filter
过滤掉 false
:
Object.keys(options).filter(function(x) {
return options[x];
});
// ['a', 'b']
您似乎想将变量名用作字符串输出的一部分。这通常不是您想做事的方式。
考虑改为这样做:
var tags = {
"vegan": true,
"non-veg": false,
"veg": false
};
var true_tags = [];
for (var tag in tags) {
if (tags[tag] === true) {
true_tags.push(tag);
}
}
console.log(true_tags); // will print [ "vegan" ]
var preferenceValues = {
'vegan': true,
'non-veg': false,
'veg': false
}
function getPreferences(preferenceValues) {
var preferences = [];
for(type in preferenceValues) {
if (preferenceValues[type]) {
preferences.push(type);
}
}
return 'Person prefers ' + preferences.join(', ') + ' food';
}
console.log(getPreferences(preferenceValues))
我建议将您的变量附加到命名空间(例如:api
):
var api={};
api.vegan= true
api.non_veg= false
api.veg = false;
然后,您需要循环遍历此命名空间的属性并过滤真实的属性。
'Person prefers '+Object.keys(api).filter((ky)=>api[ky]).join(',');
如果您无法将其添加到命名空间,则默认命名空间为 window
& 然后您需要有一个白名单来循环。
演示
var api={};
api.vegan= true;
api.non_veg= false;
api.veg = false;
console.log(
'Person prefers '+ Object.keys(api).filter((ky)=>api[ky]).join(',')
)
我有一个方法 getPreferredfood()。它获得三个代表不同食物的布尔值。哪一个是真的,你 return 那些。
getPreferredFood: function (){
var item 1;
var item2 ;
var item3;
//comparison?
return "Preferred food is " (whichever item was true)
}
我不确定如何 return 正确的项目。
将值存储在对象/映射中:
var options = {
a: true,
b: true,
c: false,
};
在该数组上使用 Object.keys
to get the names and use .filter
过滤掉 false
:
Object.keys(options).filter(function(x) {
return options[x];
});
// ['a', 'b']
您似乎想将变量名用作字符串输出的一部分。这通常不是您想做事的方式。
考虑改为这样做:
var tags = {
"vegan": true,
"non-veg": false,
"veg": false
};
var true_tags = [];
for (var tag in tags) {
if (tags[tag] === true) {
true_tags.push(tag);
}
}
console.log(true_tags); // will print [ "vegan" ]
var preferenceValues = {
'vegan': true,
'non-veg': false,
'veg': false
}
function getPreferences(preferenceValues) {
var preferences = [];
for(type in preferenceValues) {
if (preferenceValues[type]) {
preferences.push(type);
}
}
return 'Person prefers ' + preferences.join(', ') + ' food';
}
console.log(getPreferences(preferenceValues))
我建议将您的变量附加到命名空间(例如:api
):
var api={};
api.vegan= true
api.non_veg= false
api.veg = false;
然后,您需要循环遍历此命名空间的属性并过滤真实的属性。
'Person prefers '+Object.keys(api).filter((ky)=>api[ky]).join(',');
如果您无法将其添加到命名空间,则默认命名空间为 window
& 然后您需要有一个白名单来循环。
演示
var api={};
api.vegan= true;
api.non_veg= false;
api.veg = false;
console.log(
'Person prefers '+ Object.keys(api).filter((ky)=>api[ky]).join(',')
)