【问题标题】:jQuery .each help, I want to trim() all the strings in an arrayjQuery .each 帮助,我想修剪()数组中的所有字符串
【发布时间】:2010-12-10 16:42:02
【问题描述】:

我将一个字符串拆分为一个数组,然后我想删除每个元素周围的空白。我正在使用 jQuery。我可以用 2 个数组成功地做到这一点,但我知道这是不正确的。如何循环遍历数组并修剪每个元素,以便元素保持这种变化。感谢您的任何提示。这是我使用两个数组的工作代码。请告诉我正确的方法。

var arVeh = vehicleText.split("|");
    var cleanArry = new Array();
    $.each(arVeh, function (idx, val) {

        cleanArry.push($.trim(this));

    });

干杯, ~ck 在圣地亚哥

【问题讨论】:

  • 你想通过不声明第二个数组来更有效地做到这一点??
  • 是的,我只想使用一个数组,arVeh

标签: javascript jquery arrays


【解决方案1】:

您甚至不需要 idx 或 val 参数。这似乎适用于jsFiddle

var cleanVehicles = [];

$.each(vehicleText.split("|"), function(){
    cleanVehicles.push($.trim(this));
});

编辑:既然我已经看到了你真正想要的东西,请尝试使用地图:

var cleanVehicles = $.map(vehicleText.split("|"), $.trim);

【讨论】:

  • 如果您仔细观察他的问题,他会说他已经知道如何做到这一点。他想获取一个数组并简单地去除空白而不创建另一个数组。
  • 在我发布后就看到了,我已经更新了使用地图的答案。
【解决方案2】:

我将建议不要将 jQuery 的开销用于简单的 for 循环...

var arVeh = vehicleText.split("|");

for (var i = 0, l = arVeh.length; i < l; ++i) {
    arVeh[i] = $.trim(arVeh[i]);
});

或者,从一开始就去掉空格,完全避免需要另一个循环。

var arVeh = $.trim(vehicleText).split(/\s*\|\s*/);

【讨论】:

  • 正如我在@Jerry 的回答中所说的那样 - 这不是太容易而且太有意义了吗?
  • 这显然是最好的答案。人们总是沉迷于使用 jQuery,忘记了 jQuery 无论如何只是 javascript。
  • 我只是好奇...你有任何数字来说明 $.each 的实际开销吗?我更喜欢使用 $.each 来简化语法,这对我来说比(可能)moderate 性能损失更重要。
  • 但我想当你在其中添加 .split() 时,它会弄脏干净的 .each ... +1 =)
  • @Derek - 真的取决于数组的大小。这是一个简单的谷歌搜索提供的内容:jquery-howto.blogspot.com/2009/06/…
【解决方案3】:

没有在 javascript 代码中“创建”一个数组(数组仍然会在内存中创建)

vehicles = $.map(vehicleText.split("|"), function(e,i) { return $.trim(e) });

【讨论】:

    【解决方案4】:
    var my_arr = ['    cats', 'dogs    ', '  what  '];
    $.each(my_arr, function (id, val) {
        my_arr[id] = $.trim(val);
    });
    console.log(my_arr);
    

    这将修剪该值并将其设置为索引项。

    【讨论】:

      【解决方案5】:

      您不必使用 JQuery。这是您的普通解决方案:

      testArray.map(Function.prototype.call, String.prototype.trim);

      Function.prototype.call 对 testArray 的每个元素调用 trim()。就这么简单!

      【讨论】:

        【解决方案6】:

        你就不能这样做吗?

         var arVeh = vehicleText.split("|");
        
        $.each(arVeh, function (idx, val) {
        
            arVeh[idx] = $.trim(this);
        
        });
        

        【讨论】:

        • 但这不会太容易而且太有意义了吗?
        【解决方案7】:
        //a simple function
        function trimArray(dirtyArray){
          $.map(dirtyArray.split("|"), function(idx, val){
            return $.trim(this);
          });
        }
        
        trimArray(vehicleArray);
        

        应该做的伎俩

        或者您可以使用 javascript 的一些强大功能并使用 array.prototype。我在使用任何对象的.prototype 方面还是有点新意...所以这不能保证有效(但肯定可以做到)。

        Array.prototype.trim = function (){
          $.map(dirtyArray.split("|"), function(idx, val){
            return $.trim(this);
          });
        }
        
        someArray.trim()
        

        【讨论】:

        • 是的,他想要一种轻松修剪数组值的方法。
        • @darek,不,请看他上面的评论,他的代码正在运行,但他想做得更有效,我并不是说你的代码不好,绝对是它的好代码
        • 是的,我在 jQuery 网站上看到了这个,这很有效 var foo = [1,2,3]; $.each(foo, function(index, val) { foo[index] = val+10; });
        • @gov - 我认为你错了......也许 OP 应该澄清
        • 根据您在哪里使用该 Array 原型,它可能是坏的 juju。我在 Firefox 扩展中的 Array 上使用了类似的原型(唯一),并且由于某种原因,每当鼠标停留在任何东西上时,都会弹出一个空白工具提示。 Firefox 不喜欢向 Array 添加原型。
        【解决方案8】:

        你需要这两个 jQuery 函数: 1.) 遍历具有编辑项目能力的数组元素: http://api.jquery.com/jquery.map/

        2.) 删除字符串开头和结尾的空格: http://api.jquery.com/jQuery.trim/

        这样使用它们:

        array = $.map(array, function(value) { return value.trim();});
        

        检查这个 JSFiddle: https://jsfiddle.net/L00eyL4x/49/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-01
          • 2011-10-09
          • 1970-01-01
          • 2022-01-03
          • 1970-01-01
          相关资源
          最近更新 更多