Очистка переменных, переданных в функцию с помощью $ .each () - PullRequest
1 голос
/ 15 февраля 2011

У меня есть следующее:

setup : function(first, middle, last) {

    // Clean input.
    $.each([first, middle, last], function(index, value) {

        ??? = value.replace(/[\W\s]+/g, '').toLowerCase();
    });

Есть ли способ заставить это работать? Я попытался выяснить, что заменить вместо ??? (я пробовал this, index, this[index], но, похоже, не могу обернуться, указывая на исходные переменные.

Спасибо за любую помощь.

Ответы [ 2 ]

2 голосов
/ 15 февраля 2011

Использовать объект Arguments.

setup : function(first, middle, last) {
    var args = arguments;
    $.each(arguments, function(index, value) {
        args[index] = value.replace(/[\W\s]+/g, '').toLowerCase();
    });

Пример: http://jsfiddle.net/EfHQ2/

1 голос
/ 15 февраля 2011

Чтобы изменить массивы, используйте $.map() вместо этого и просто верните новое значение:

var clean = $.map([first, middle, last], function(value, index) {
    return value.replace(/[\W\s]+/g, '').toLowerCase();
});

Лучше используйте специальный объект arguments (как в ответ Патрика )на месте построения временного массива:

var clean = $.map(arguments, function(value, index) {
    return value.replace(/[\W\s]+/g, '').toLowerCase();
});
...