Estoy comprobando tres variables diferentes que contienen una serie de cadenas como la siguiente.
var a = ["ghi",dwe"] var b = ["ghsj"] var c = ["gdjr"] var result; // result arrayEstoy comprobando cada vez si las variables a, b, c no están indefinidas y si tienen algún valor. Simplemente estoy presionando una cadena para cada variable en la matriz de resultados.
A continuación se muestra la línea de código para el mismo.
if(a !== undefined && a.length > 0) { result.push("Astring"); } if(b !== undefined && b.length > 0) { result.push("Bstring"); } if(c!== undefined && c.length > 0) { result.push("Cstring"); }El resultado esperado debe ser si las var a, b, c están definidas y no están vacías, entonces la variable de matriz de resultados debe contener un valor como el siguiente
["Astring","BString","CString"]¿Hay una forma más eficiente de describir este código? Aquí solo estoy verificando todas y cada una de las variables usando la condición if. Además, estoy restringido de alguna manera ya que estoy usando un motor Rhino js versión 1.7.12.
Podrías crear un objeto con tus datos iniciales. Luego itere sobre él y agregue la clave (por ejemplo, a , b o c ) si coincide con su condición.
Aquí hay una demostración rápida:
// Initial Data const a = ['ghi', 'dwe']; const b = ['ghsj']; const c = ['gdjr']; // Store intial within an array const abc = {a, b, c}; const result = []; // Append each data item that present, is array, and not empty Object.keys(abc).forEach((letterKey) => { const content = abc[letterKey]; if(Array.isArray(content) && content.length > 0) { result.push(letterKey); } }); // Print results console.log(result);Usaría un objeto en lugar de una matriz, para que se puedan especificar los elementos de resultado.
var a = ["ghi","dwe"] var b = ["ghsj"] var c = ["gdjr"] mapping = { "AString": a, "BString": b, "CString": c } var result = []; // result array for (let [key, value] of Object.entries(mapping)) { if (value !== undefined && value.length > 0) { result.push(key) } } console.log(result)primero almacenará las 3 variables en una lista y luego las recorrerá con el mapa
var a = ["ghi","dwe"] var b = ["ghsj"] var c = ["gdjr"] var result = []; let list = [a,b,c] list.map(item => { if(item !== undefined && a.length > 0) { result.push(item) } })