Lo siento si esto no tiene sentido. Soy muy, muy nuevo en esto.
Estoy tratando de resolver un problema en el que devuelve el primer y último valor de una matriz. Siento que tengo las bases correctas con este código. p.ej:
function getFirstAndLast(array) { return [array.shift(), array.pop()] } let newArray = [] newArray = getFirstAndLast([5, 10])la consola imprimirá: [5, 10]
Sin embargo, cuando se le da solo 1 argumento, la consola devolverá el valor e indefinido. p.ej:
function getFirstAndLast(array) { return [array.shift(), array.pop()] } let newArray = [] newArray = getFirstAndLast([5])la consola ahora imprimirá: [5, indefinido]
La pregunta es cómo cambio mi código para que solo devuelva el valor único sin el indefinido, pero sigo conservando la capacidad de extraer el primer y el último valor de la matriz si se me dan 2 o más argumentos.
de nuevo, lo siento si esto no tiene sentido o si he dicho algo mal por error. Gracias
Usaría el enfoque sin mutar la matriz y tomaría el corte de matrices más pequeñas y los índices para una matriz más grande.
function getFirstAndLast(array) { return array.length < 3 ? array.slice(0, array.length) : [array[0], array.at(-1)]; } console.log(getFirstAndLast([])); // [] console.log(getFirstAndLast([5])); // [5] console.log(getFirstAndLast([3, 5])); // [3, 5] console.log(getFirstAndLast([1, 3, 5])); // [1, 5] .as-console-wrapper { max-height: 100% !important; top: 0; }Solo use la longitud, si length es 1, devuelva el mismo número como:
function getFirstAndLast(array) { return (array.length === 1) ? [array[0], array[0]] : [array.shift(), array.pop()]; } console.log(getFirstAndLast([5])); console.log(getFirstAndLast([5,10])); console.log(getFirstAndLast([5,10,15]));Mejor verifique el valor vacío como:
function getFirstAndLast(array) { const lenArr = array.length; if (lenArr === 0) { return []; } else { return (lenArr === 1) ? [array[0], array[0]] : [array.shift(), array.pop()]; } } console.log(getFirstAndLast([])); console.log(getFirstAndLast([5])); console.log(getFirstAndLast([5, 10])); console.log(getFirstAndLast([5, 10, 15]));Referencia:
De la pregunta anterior, tengo la impresión de que desea obtener el primer y el último valor de una matriz. Espero que esto funcione.
var myArray = [5]; function firstAndLast(array) { var firstItem = myArray[0]; var lastItem = myArray[myArray.length-1]; var objOutput = {}; objOutput[firstItem]=lastItem return objOutput; } var display = firstAndLast(myArray); console.log(display);