En el siguiente post, os explicamos la forma correcta de vaciar un array en js y eliminar posiciones en concreto.
Sé que parece muy absurdo, pero me encontré con un problema intentando vaciar un array en js, con KnockOut, y mirando encontré la forma correcta de vaciar cualquier array.
El problema
El problema es que en KnockOut tenia una propiedad con un listado de envíos, normalmente para vaciarlas lo que hacíamos era igualarlo a [], que es lo mismo que hacer un new Array(). Esto no es muy óptimo, pero aparte, en un caso muy muy concreto no me funcionó. La propiedad con el listado de envíos era de tipo ko.observableArray() y cuando le asignabas ko.observableArray([]) o ko.observableArray(new Array()) me ignoraba.
La solución
Pues aparte de que igualarlo a [] no es óptimo porque vuelves a hacer una instancia de ese array. La mejor forma según he visto es modificar el length de la colección a 0.
Por ejemplo:
propiedad().length = 0
En el caso de un array de Js normal seria
arrayEnCuestion.length = 0
Eliminar posiciones concretas
var arrayEnCuestion = ["Soy", "un", "array"];
Splice elimina las posiciones que quieras a partir del indice. Te devuelve lo que ha eliminado.
arrayEnCuestion.splice(1, 2);
Esto nos devolvería [«un», «array»] y en el array ya estaría eliminado.
Shift sirve para eliminar el primer elemento del array. Te devuelve lo que ha eliminado.
arrayEnCuestion.shift()<pre> Esto nos devolvería<strong> ["Soy"]</strong> y en el array ya estaría eliminado. <strong>Pop</strong> sirve para eliminar el último elemento del array. Te devuelve lo que ha eliminado. arrayEnCuestion.pop()
Esto nos devolvería ["array"] y en el array ya estaría eliminado.