Подтвердить что ты не робот

JQuery.each help, я хочу обрезать() все строки в массиве

Я разделяю строку на массив, тогда я хочу удалить пустое пространство вокруг каждого элемента. Я использую jQuery. Я могу сделать это успешно с 2 массивами, но я знаю, что это не правильно. Как мне пройти через массив и обрезать каждый элемент, чтобы элементы сохраняли это изменение. Спасибо за любые советы. Вот мой рабочий код с использованием двух массивов. Пожалуйста, покажите мне правильный способ сделать это.

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

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

    });

Cheers, ~ ck в Сан-Диего

4b9b3361

Ответ 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*/);

Ответ 3

var my_arr = ['    cats', 'dogs    ', '  what  '];
$.each(my_arr, function (id, val) {
    my_arr[id] = $.trim(val);
});
console.log(my_arr);

Это позволит обрезать значение и установить его в индексированный элемент.

Ответ 4

Вам не нужно использовать JQuery. Вот ваше решение для ванили:

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

Функция .prototype.call вызывает trim() для каждого из элементов testArray. Так просто!

Ответ 5

//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()

Ответ 6

Не могли бы вы просто сделать это?

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

$.each(arVeh, function (idx, val) {

    arVeh[idx] = $.trim(this);

});

Ответ 7

Без "создания" массива в javascript-коде (массив будет тем не менее создан в памяти)

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

Ответ 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/