Nuevo en la codificación y el trabajo en JavaScript. Estoy seguro de que hay una forma sencilla de hacerlo, pero ha sido difícil identificarlo con las búsquedas de Google.
Estoy tratando de encontrar una función de JavaScript o algo por el estilo que encuentre el nombre de un bool en una matriz (no el valor del bool) y me lo devuelva. Además, los booleanos deben estar en una matriz. No puedo convertirlos en claves de objeto para mis propósitos.
Aquí hay un ejemplo simulado de lo que estoy tratando de hacer:
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();Tendrá que reestructurar su matriz de dinnerOptions de cena de alguna manera. Sugeriría transformarlo en una matriz de objetos, como se muestra a continuación. Por lo tanto, dinnerOptions sigue siendo una matriz, pero los elementos que contiene son más útiles/significativos cuando están presentes en forma de objetos.
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(); Además, la condición para el ciclo for era incorrecta i debería ser estrictamente menor que dinnerOptions.length . Y sugeriría usar let y const en lugar de var .
function dinnerPreferences(){ var isChinese = false; var isItalian = true; var isIndian = false; var isHomemade = true; var isTakeout = false; var dinnerOptions = {isChinese:isChinese, isItalian:isItalian, isIndian:isIndian, isHomemade:isHomemade, isTakeout:isTakeout}; console.log("Dinner options values: " + Object.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("Dinner options keys" + Object.keys(dinnerOptions)); } getPreferences(); } dinnerPreferences();