如何删除javascript数组中的空白元素
How to remove the blank element in javascript array?
我有以下实现。
Array.prototype.abc = function(condition, t){
var arr = [];
for( var i = 0; i < this.length; i++){
arr.push(condition(this[i],t));
}
return arr;
};
var a = [1,2,3,4];
var t = 2;
alert(a.abc( function(item,diviser){
if(item % diviser === 0) { return item; }
},t));
结果应该是[2,4]
。相反,我得到了[,2,,4]
。
我尝试过以下条件,但它总是返回上面的结果。
if(condition(this[i],t) !== false){ arr.push(condition(this[i],t)); }
我做时正在做的事情
if(item % diviser === 0) { return item; } else { return false; }
false
条件不适用于'false'
、true
或'true'
,也不适用于我在其他部分返回的任何值。在实际的实现中,我没有else
部分。我知道我们可以使用splice
或其他东西来删除空白部分。但我不明白,即使我什么都不回,为什么在被创造时是空白的。即使在arr.push
之前使用if条件,它也不起作用。到底发生了什么?如何删除数组中的空白?
您必须从callBack
、中检查返回值是否为undefined
for( var i = 0; i < this.length; i++){
var x = condition(this[i],t);
if(typeof x !== "undefined") arr.push(x);
}
你已经做了两次不同的尝试来解决这个问题,但都会失败,因为,
!== false
,您的回调将返回一个数字或未定义。因此,由于操作数的类型不同,严格相等将始终失败,并且总是被计算为false。if(item % diviser === 0) { return item; } else { return false; }
当条件失败时,这将返回false,因此false
将被推入数组。它不会跳过推动部分。
将cmcondition移到push之外并将其放在前面。条件只应返回true或false。
condition(this[i],t) && arr.push(this[i]);
这是因为无论condition
返回什么,您都在进行推送。
更换此
arr.push(condition(this[i],t));
带有
var val = condition(this[i],t)
val = val !== false && arr.push(val);
由于condition
方法显式返回false,因此您可以简单地检查val !== false
演示
Array.prototype.abc = function(condition, t){
var arr = [];
for( var i = 0; i < this.length; i++){
var val = condition(this[i],t); console.log(val);
val !== false && arr.push(val);
}
return arr;
};
var a = [1,2,3,4];
var t = 2;
document.body.innerHTML += a.abc( function(item,diviser){
if(item % diviser === 0) { return item; } else { return false; }
},t);
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 当从jquery的点击事件中的每个循环创建的数组到它之外时,它显示空白数组
- 如何删除javascript数组中的空白元素
- 如何将项追加到空白数组中
- Php和javascript数组-跳过空白值并添加到新数组中
- 使用jQuery.parseJSON检索包含空白的php数组
- 数组未设置回[](空白)
- 为什么't trim()不能处理$ ?用于删除字符串数组中的空白
- 排序javascript数组,使空白值总是在底部
- 将数组转换为函数参数的空白变量列表
- 反转数组并使用javascript填充空白
- 去掉JS数组并保留空白
- Web Audio API分析器节点getByteFrequencyData返回空白数组
- 拼接数组中剩余的最后一个空白
- 如何以正确的顺序创建数组对象,不存在的键值映射为空白值
- 如何从自动完成数据中删除空白数组
- 被记录的数组在返回时显示为空白
- Js数组到json转换,结果是空白页
- 清除字符串数组中的空白