我如何访问bool(不是它的值)的名称/键?



刚开始用JavaScript编码和工作。我相信有一种简单的方法可以做到这一点,但很难用谷歌搜索来确定。

我试图找到一个JavaScript函数或类似的东西,将找到名称一个数组中的bool(不是bool的值),并返回给我。此外,这些bool必须在一个数组中。我不能让它们成为对象键。

下面是我正在尝试做的一个模拟示例:

JavaScript:

function dinnerPreferences(){
var isChinese = false;
var isItalian = true;
var isIndian = false;
var isHomemade = true;
var isTakeout = false;
var dinnerOptions = [isChinese, isItalian, isIndian, isHomemade, isTakeout];
console.log("Dinner options values: " + dinnerOptions);
function getPreferences(){
var wantedDinnerOptions = [];
// Gather the true values in new array: wantedDinnerOptions
for(i = 0; i <=dinnerOptions.length; i++){
if(dinnerOptions[i]){
wantedDinnerOptions.push(dinnerOptions[i]);
}
}
// Access bool values:
console.log("Confirm true values: " + wantedDinnerOptions);
// Access bool length:
console.log("True value index length: " + wantedDinnerOptions.length)
// Access bool NAMES(???):
console.log("Object.keys() doesn't work. What else can I use?");
}
getPreferences();
}
dinnerPreferences();

您将不得不以某种方式重组您的dinnerOptions数组。我建议将其转换为对象数组,如下所示。因此,dinnerOptions仍然是一个数组,但其中的项以对象的形式出现时更有用/更有意义。

function dinnerPreferences() {
const dinnerOptions = [
{ type: "Chinese", availability: false },
{ type: "Italian", availability: true },
{ type: "Indian", availability: false },
{ type: "Homemade", availability: true },
{ type: "Takeout", availability: false },
];
console.log(
"All dinner options values: " + dinnerOptions.map((opt) => opt.type)
);
function getPreferences() {
const wantedDinnerOptions = [];
for (let i = 0; i < dinnerOptions.length; i++) {
if (dinnerOptions[i].availability) {
wantedDinnerOptions.push(dinnerOptions[i].type);
}
}
console.log("Available dinner options: " + wantedDinnerOptions);
}
getPreferences();
}
dinnerPreferences();

for环的条件也不正确,i应严格小于dinnerOptions.length。我建议使用letconst而不是var

最新更新