13

可能重复:
从 Javascript 中的数组中删除空元素

我想null使用从数组中删除或清空元素jquery

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

请给一些建议。

4

6 回答 6

20

使用 jquery grep函数,它将识别通过您定义的条件的数组元素

arr = jQuery.grep(arr, function(n, i){
  return (n !== "" && n != null);
});
于 2012-10-05T12:04:27.033 回答
5

jQuery 中不需要,使用纯 JavaScript(它更快!):

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

现代浏览器的另一个简单解决方案(使用 Arrayfilter()方法):

clientname.filter(function(value) {
    return value !== "" && value !== null;
});
于 2012-10-05T12:01:50.437 回答
3

正在考虑,由于 jQuery 的.map()函数依赖于返回null / undefined 的东西,你可以摆脱这样的事情:

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

您仍然需要检查空字符串,但您真的不必再检查 null 和 undefined 了,这样您的逻辑就少了一个复杂性。

于 2012-10-05T12:34:59.460 回答
0
  1. 创建一个新的空数组。
  2. 如果值不等于“”,则进入 foreach 循环并将项目添加到新数组中。
于 2012-10-05T12:02:55.133 回答
-1

尝试这个 :

$.each(clientname, function(key, value) { 
  if (value === 'undefined' || value === '')
     clientname.splice(key,1);
});
于 2012-10-05T12:01:43.383 回答
-1

使用以下代码:

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

   if(clientname[i] !== "" && clientname[i] !== null){
    newarr.push(clientname[i]);
   }
}
于 2012-10-05T12:01:44.553 回答