Tengo una matriz: var foo = []; y quiero insertar archivos en él: foo.push(input.files[0]) Pero si quiero eliminar un elemento con una clave específica con delete foo[i] , la longitud de la matriz no se reducirá y se eliminará el artículo será reemplazado con una etiqueta empty / undefined . ¿Hay alguna forma de eliminar completamente los elementos de una matriz?
var foo = []; var input = document.getElementById('input'); document.getElementById('add').addEventListener('click', () => { foo.push(input.files[0]); }); document.getElementById('delete').addEventListener('click', () => { delete foo[0]; }); document.getElementById('check').addEventListener('click', () => { console.log(foo); console.log(foo.length); }); <button id="add">ADD</button> <button id="delete">DELETE</button> <button id="check">CHECK</button> <br><br> <input type="file" id="input" placeholder="UPLOAD IMAGE"> const output = document.getElementById('output'); const filepicker = document.getElementById('filepicker'); const addToArray = []; const deleteFromArray = []; filepicker.addEventListener('change', (event) => { const files = event.target.files; output.textContent = ''; for (const file of files) { const li = document.createElement('li'); li.textContent = file.name; output.appendChild(li); } }) document.getElementById("addArray").addEventListener("click", function() { if (filepicker.files.length <= 0) { alert('filepicker empty') } else { addToArray.length = 0; for (var i = 0; i <= filepicker.files.length - 1; i++) { var fname = filepicker.files.item(i).name; addToArray.push(fname); } console.log(addToArray); } }); document.getElementById("arrayCount").addEventListener("click", function() { if (filepicker.files.length <= 0) { alert('filepicker empty') } else { console.log(`Array count: ${addToArray.length} \n New array: [${addToArray}]`); } }); document.getElementById("deleteArray").addEventListener("click", function() { if (filepicker.files.length <= 0) { alert('filepicker empty') } else { var deleteIndex = prompt("Enter index to delete (starts from 0):") console.log(addToArray.splice(deleteIndex, 1)); } }); <input type="file" id="filepicker" multiple> <div> <p>List of selected files:</p> <ul id="output"></ul> </div> <div> <button type="button" id="addArray">Add to array</button> <button type="button" id="deleteArray">Delete from array</button> <button type="button" id="arrayCount">Check array count</button> </div>Esto le permitirá seleccionar varios elementos y agregarlos, eliminarlos de la matriz y verificar la longitud de la matriz.