const z = [ [ "Almond", 54 ], [ "Oats", 75 ], [ "Raisins", undefined ] ] let temp=[]; z.map((item, index) => { temp.push(item); if (item[item.length - 1] === undefined) { temp[index][1] = 'Not available' } }); console.log(temp) console.log(z); Estoy cambiando la entrada undefined a 'No disponible' creando otra matriz. No puedo entender que mi matriz z está cambiando junto con temp .
Un mejor enfoque sería devolver una matriz de resultados, asignando cada entrada en la matriz de item a 'No disponible' si no está undefined y luego la última entrada en la matriz de elementos.
Esto dejará intacta la matriz z original.
const z = [ [ "Almond", 54 ], [ "Oats", 75 ], [ "Raisins", undefined ] ] let result = z.map((item, index) => { return item.map((val, idx) => { let notAvailable = (val === undefined) && (idx === item.length -1); return notAvailable ? 'Not available': val; }) }) console.log('z:', z); console.log('Result:', result) .as-console-wrapper { max-height: 100% !important; }