这个问题在这里被问到: 从数组中删除空字符串,同时保留非空字符串的索引记录
如果您注意到@Baz 所给出的内容;
"I", "am", "", "still", "here", "", "man"
“由此我希望生成以下两个数组:”
"I", "am", "still", "here", "man"
这个问题的所有答案都提到了一种循环形式。
我的问题:是否有可能在没有任何循环的情况下使用 index
empty
删除所有
string
? ...除了迭代数组之外,还有其他选择吗?
可能有一些regex
或一些我们不知道的
jQuery
?非常感谢所有答案或建议。
var arr = ["I", "am", "", "still", "here", "", "man"]
// arr = ["I", "am", "", "still", "here", "", "man"]
arr = arr.filter(Boolean)
// arr = ["I", "am", "still", "here", "man"]
文档
// arr = ["I", "am", "", "still", "here", "", "man"]
arr = arr.filter(v=>v!='');
// arr = ["I", "am", "still", "here", "man"]
var newArray = oldArray.filter(function(v){return v!==''});
请注意: 文档说:
因此,为了避免一些心痛,您可能必须将此代码添加到您的脚本中
filter
是 ECMA-262 标准的 JavaScript 扩展;像这样它可能不存在于该标准的其他实现中。你 可以通过在开头插入以下代码来解决此问题 您的脚本,允许在 ECMA-262 实现中使用过滤器 本身不支持它。这个算法正是这样的 ECMA-262 第 5 版中指定,假设 fn.call 的计算结果为 Function.prototype.call 的原始值,并且 Array.prototype.push 有其原始值。
在开始时。
if (!Array.prototype.filter) {
Array.prototype.filter = function (fn, context) {
var i,
value,
result = [],
length;
if (!this || typeof fn !== 'function' || (fn instanceof RegExp)) {
throw new TypeError();
}
length = this.length;
for (i = 0; i < length; i++) {
if (this.hasOwnProperty(i)) {
value = this[i];
if (fn.call(context, value, i, this)) {
result.push(value);
}
}
}
return result;
};
}
arr = arr.filter(v => v);
返回的
v
隐式转换为truthy
grep 可能有用:
var arr = [ a, b, c, , e, f, , g, h ];
arr = jQuery.grep(arr, function(n){ return (n); });
arr
现在是
[ a, b, c, d, e, f, g];
var emails = EmailText.replace(","," ").replace("\n"," ").replace(" ","").split(" ");
for(var i in emails)
emails[i] = emails[i].replace(/(\r\n|\n|\r)/gm,"");
emails.filter(Boolean);
console.log(emails);
roomProvider.roomsList?.where((room) => room.roomDestination != '');