2010-12-07 18 views
28

¿Es posible eliminar el contenido de la matriz según el índice? Si tengo 2 matrices como estas:cómo eliminar elementos de la matriz?

Array1 que contiene 15 valores y quiero obtener los últimos 10 valores.

Antes de la eliminación de los elementos:

array1 == [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14] 

Después de la eliminación de los elementos:

array1 == [5,6,7,8,9,10,11,12,13,14] 

Array2 que contiene 15 valores y luego me quieren obtener sólo los primeros 10 valores.

Antes de elementos de la eliminación:

array2 == [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14] 

Después de elementos de la eliminación:

array2 == [0,1,2,3,4,5,6,7,8,9] 

pero hay condiciones que deben cumplirse:

si la matriz sólo contiene 3 elementos no es necesario descartar los elementos en la matriz, así como si la matriz contiene solo 10 elementos. pero si la matriz contiene más de 10 elementos, el exceso se descarta.

Respuesta

49

para mantener a los primeros diez artículos:

if (theArray.length > 10) theArray = theArray.slice(0, 10); 

o, tal vez menos intuitiva:

if (theArray.length > 10) theArray.length = 10; 

para mantener los últimos diez artículos:

if (theArray.length > 10) theArray = theArray.slice(theArray.length - 10, 10); 

Puede usar un valor negativo para el primer parámetro para especificar la longitud - n, y omitir el segundo parámetro recibe todos los artículos al final, por lo que la misma también se puede escribir como:

if (theArray.length > 10) theArray = theArray.slice(-10); 

El método splice se utiliza para eliminar elementos y reemplazar con otros elementos, pero si no se especifican los artículos nuevos que puede ser utilizado para eliminar solo elementosPara mantener los diez primeros artículos:

if (theArray.length > 10) theArray.splice(10, theArray.length - 10); 

para mantener los últimos diez artículos:

if (theArray.length > 10) theArray.splice(0, theArray.length - 10); 
+3

solo tenga en cuenta que el empalme también editará el arreglo original, mientras que el corte no. –

+0

@LukasLiesis Esto siempre me ha molestado porque se siente como una incoherencia. Si alguien sabe por qué es esto, ¡me encantaría saberlo! –

3

Ver splice()

El método splice() cambia el contenido de una matriz mediante la eliminación de los elementos existentes y/o la adición de nuevos elementos.

No creará una nueva matriz, si desea crear una nueva matriz, use slice.

+0

Tal vez te estoy malentendido, pero sí crear una nueva matriz para mí (y mutado la matriz existente) . p.ej. 'var b = a.splice (0, 3)' – AlexG

3

un poco difícil de seguir su pregunta, pero trata de los siguientes:

array = array.slice(-10); 

// or 

last10 = array.splice(-10); 
// array has first array.length-10 elements 
13

utilizar la función array.splice(index, count) para eliminar elementos en countindex. Para eliminar elementos de la final, utilice array1.splice(array1.length - 10, 1);

+0

hmm no sé qué quiere decir con índice y recuento, ¿puede explicarlo? – user495688

+0

Consulte http://www.hunlock.com/blogs/Mastering_Archivos_Javascript –

+0

El índice @ user495688 muestra por dónde empezar para eliminar elementos y contar: cuántos elementos eliminar. p.ej. array.splice (0, 5) elimina 5 elementos comenzando con el índice 0. En otras palabras, desde el principio. –

Cuestiones relacionadas