从数组中删除空字符串同时保持无循环记录?

IT技术 javascript arrays indexing string removeall
2021-02-26 00:33:15

这里问了这个问题: 从数组中删除空字符串,同时保留非空字符串的索引记录

如果您注意到@Baz 列出的内容;

"I", "am", "", "still", "here", "", "man"

“由此我希望生成以下两个数组:”

"I", "am", "still", "here", "man"

这个问题的所有答案都提到了一种循环形式。

我的问题:是否有可能在没有任何循环的情况下删除所有indexes empty string ...除了迭代数组之外还有其他选择吗?

可能是我们不知道的一些regex或一些jQuery

非常感谢所有的答案或建议。

6个回答
var arr = ["I", "am", "", "still", "here", "", "man"]
// arr = ["I", "am", "", "still", "here", "", "man"]
arr = arr.filter(Boolean)
// arr = ["I", "am", "still", "here", "man"]

filter 文件


// arr = ["I", "am", "", "still", "here", "", "man"]
arr = arr.filter(v=>v!='');
// arr = ["I", "am", "still", "here", "man"]

箭头函数文档

我很清楚你的感受,我几个月前用过,解决了很多小问题
2021-04-18 00:33:15
这个答案的所有功劳都应该转到stackoverflow.com/questions/16701319/...
2021-04-25 00:33:15
这是array.filter(!!)我们目前能得到的最接近的:)
2021-05-06 00:33:15
@DiegoPlentz 那些仍在运行 IE8 的人会遇到更多的问题,而不仅仅是删除数组中的空白......这些天我几乎从未考虑过支持该浏览器
2021-05-12 00:33:15
一些关于的解释Boolean会很好。
2021-05-13 00:33:15
var newArray = oldArray.filter(function(v){return v!==''});
轻松获得最佳答案。完全按照问题的要求做。不删除零值。
2021-05-08 00:33:15

请注意: 文档说:

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隐式转换为

如果使用 jQuery,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];

jquery 对于一项琐碎的任务来说似乎很笨重
2021-04-25 00:33:15