【问题标题】:remove an empty string from array of strings - JQuery从字符串数组中删除一个空字符串 - JQuery
【发布时间】:2013-01-22 07:36:05
【问题描述】:

我有一个数组["Lorem", "", "ipsum"]。我想从这个数组中删除空字符串并得到["Lorem", "ipsum"]

有什么方法可以做到这一点,而不使用循环并遍历每个元素并删除它?

【问题讨论】:

    标签: jquery arrays


    【解决方案1】:

    您可以使用filter

    var newArray = oldArray.filter(function(v){return v!==''});
    

    The MDN 有一个解决 IE8 兼容性的方法。如果您不打算在其他任何地方使用filter,您也可以使用一个好的旧循环,循环没有问题......

    【讨论】:

    • 引用“循环没有问题...”,除了循环可能(并非总是)非常慢。你们有没有试过用 js-fiddle 中的循环来补充原生 indexOf() 函数。让我们说 indexOf 更快。
    【解决方案2】:

    如果您使用 Javascript 1.6(可能无法在 IE8 或更低版本上运行),您可以使用

    arr.filter(Boolean) //filters all non-true values
    

    例如。

    console.log([0, 1, false, "", undefined, null, "Lorem"].filter(Boolean));
    // [1, "Lorem"]

    【讨论】:

      【解决方案3】:

      另一种选择是使用jquery的.map()函数:

      var newArray = $.map( oldArray, function(v){
        return v === "" ? null : v;
      });
      

      【讨论】:

        【解决方案4】:
        <script type="text/javascript" src="js/jquery.js"></script>
        <script type="text/javascript">
        
        function cleanArray(actual)
        {
            var newArray = new Array();
            for(var i = 0; i<actual.length; i++)
            {
                if (actual[i])
                {
                    newArray.push(actual[i]);
                }
            }
            return newArray;
        }
        
        $(function()
        {
            var old = ["Lorem", "", "ipsum"];
        
            var newArr = cleanArray(old);
        
            console.log(newArr)
        });
        </script>

        无循环

        <script type="text/javascript" src="js/jquery.js"></script>
        <script type="text/javascript">
        
        $(function()
        {
            var arr = ["Lorem", "", "ipsum"];
        
            arr = $.grep(arr,function(n){
                return(n);
            });
        
            console.log(arr)
        });
        </script>

        两者都经过测试。

        【讨论】:

          【解决方案5】:

          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];

          【讨论】:

            猜你喜欢
            • 2013-03-02
            • 1970-01-01
            • 1970-01-01
            • 2016-05-30
            • 2019-05-21
            • 2013-04-07
            • 1970-01-01
            • 1970-01-01
            • 2018-04-12
            相关资源
            最近更新 更多