2012-10-05 17 views
11

Duplicar posible:
Remove empty elements from an array in Javascriptcómo quitar valores nulos de una matriz usando jQuery

Quiero eliminar null o vacíos elementos de una matriz mediante jquery

var clientName= new Array(); 
clientName[0] = "jack"; 
clientName[1] = ""; 
clientName[2] = "john"; 
clientName[2] = "peter"; 

Por favor, dé algunas sugerencias.

+4

¿Has probado algo? ¿Está pidiendo que las personas lo dirijan en la dirección de las declaraciones de bucle y los operadores de comparación? – lanzz

+0

'{}' es una lista de definición de objeto, no una lista de definición de matriz. Que sería '[]'. –

+0

@MihaiStancu Debe ser un error tipográfico, no sería un objeto literal válido. – kapa

Respuesta

-1

Prueba esto:

$.each(clientname, function(key, value) { 
    if (value === 'undefined' || value === '') 
    clientname.splice(key,1); 
}); 
+0

Esto eliminará '0' también. – kapa

+0

Sí @ bažmegakapa, pero la matriz no parece contener valores numéricos. He hecho una solución. –

+0

Aún peor :). '0 == '''. ¿Y qué hay de eso '' undefined''? – kapa

-1

utilizar el siguiente código: (es más rápido)

var newarr=[]; 
for(var i=0; i<len(clientname);i++){ 

    if(clientname[i] !== "" && clientname[i] !== null){ 
    newarr.push(clientname[i]); 
    } 
} 
+0

Esto eliminará '0' también. – kapa

+0

no estoy removiendo .. – XMen

+0

¿Has probado? '0 == ''' en Javascript. – kapa

5

No hay necesidad de jQuery, el uso normal de JavaScript:

var newArray = []; 
for (var i = 0; i < clientname.length; i++) { 
    if (clientname[i] !== "" && clientname[i] !== null) { 
     newArray.push(clientname[i]); 
    } 
} 
console.log(newArray); 

Otra solución simple para navegadores modernos (usando el método Array filter()):

clientname.filter(function(value) { 
    return value !== "" && value !== null; 
}); 
0
  1. Crea una nueva matriz vacía.
  2. Vaya a un bucle foreach y agregue elementos a la nueva matriz si el valor no es igual a ''.
19

Uso del jQuery función grep, que va a identificar elementos de la matriz que pasan los criterios que defina

arr = jQuery.grep(arr, function(n, i){ 
    return (n !== "" && n != null); 
}); 
+0

¿Qué pasa con '0'? – kapa

+0

No puede agregar eso a ie. ... return (n! == "" && n! = null && n! == 0) ... –

+0

+1 Mucho mejor con '! =='. 'grep' es una buena opción por cierto si uno usa jQuery de todos modos. – kapa

2

pensaba que, dado que la función de jQuery .map() confía en regresar algo no nula/indefinido, usted puede salirse con la suya con algo como esto:

var new_array = $.map(old_array, function (el) { 
    return el !== '' ? el : null; 
}); 

Todavía tiene que ch busque la cadena vacía, pero ya no tiene que verificar la nula y la indefinida, así que esa es una complicación menos en su lógica.

+0

del manual: dentro de la función, 'this' se refiere al objeto global (' ventana'). Además, debes deshacerte del ''''. La idea es buena sin embargo. – kapa

+1

@ bažmegakapa ~ ah, buena captura! Olvidé por completo el cheque de cadena vacío, d'oh. Si ese es el caso, esto se reducirá a cualquiera de las otras respuestas aquí de todos modos. –

+0

Todavía +1, la idea es buena. Es bueno que las personas no tengan que verificar 'null' y' undefined', porque parecen tener suficientes problemas con eso, mirando las otras respuestas :). – kapa

Cuestiones relacionadas