Объединить значения...

Тема в разделе "JavaScript", создана пользователем MilkeyWay, 20 дек 2016.

Модераторы: ZiX
  1. MilkeyWay

    MilkeyWay Постоялец

    Регистр.:
    11 июл 2011
    Сообщения:
    130
    Симпатии:
    10
    Всем ку! Только начал изучать Jquery и не всегда получается найти ответ в гугле.

    есть такой скрипт:
    Код:
    var arrfilters = [];
    arrfilters["m"] = [];
           
    $("span.selected").each(function(i, n) {
    
          arrfilters.m.push($(n).attr("data-toggle"));
    
               
    });
    Задача выбрать все selected и добавить их attr в одну строку,что-то типа: m: 123, qqqq, 456

    Сами атрибуты в массив попадают,но с индексами:m: 0:123, 1:qqqq: 2:456

    а вот как их объединить,пробовал join,но что-то не срослось,направьте на путь истинный
     
  2. Absolute

    Absolute Крокодил ;)

    Регистр.:
    9 авг 2009
    Сообщения:
    406
    Симпатии:
    228
    HTML:
    var arrfilters = {};
    arrfilters.m = $('span.selected').map(function() {
        return $(this).data('toggle');
    }).get();
     
  3. MilkeyWay

    MilkeyWay Постоялец

    Регистр.:
    11 июл 2011
    Сообщения:
    130
    Симпатии:
    10
    получилось тоже самое:
    Код:
    Object { m: Array[3] }
    
    Array[3]
    0:"123"
    1:"qqqq"
    2:"456"
    
    нужно чтобы было так:
    Object { m: 123, qqqq, 456 }
     
  4. Absolute

    Absolute Крокодил ;)

    Регистр.:
    9 авг 2009
    Сообщения:
    406
    Симпатии:
    228
    Массив имеет индексы - это нормально. Нужна строка - добавьте join.
    HTML:
    var arrfilters = {};
    arrfilters.m = $('span.selected').map(function() {
        return $(this).data('toggle');
    }).get().join();
     
    MilkeyWay нравится это.
  5. MilkeyWay

    MilkeyWay Постоялец

    Регистр.:
    11 июл 2011
    Сообщения:
    130
    Симпатии:
    10
    респект и уважуха)


    можете в двух словах объснить почему такой способ не срабатывает?:

    var arrfilters = {};
    arrfilters.m = $('span.selected').map(function() {
    return $(this).data('toggle');
    }).get();

    arrfilters.m.join();

    какова роль .get()?
    и можно ли в данном случае было использовать each?
     
  6. Absolute

    Absolute Крокодил ;)

    Регистр.:
    9 авг 2009
    Сообщения:
    406
    Симпатии:
    228
    Почему не срабатывает? Должен срабатывать. arrfilters.m.join() - вернет строку, что вам и нужно насколько я понимаю.
    - map по сути возвращает jquery объекты, с помощью get оставляем нужный нам массив.
    Думаю, можно, почему нет. Я чего-то сразу не понял какой тип данных вы хотели получить.
    Вам можно было сразу использовать обыкновенную конкатенацию строк
    HTML:
    var arrfilters = {};
    arrfilters.m = '';
    $('span.selected').attr('data-toggle', function(i,v){
       arrfilters.m += v +',';
    });
     
    Последнее редактирование: 21 дек 2016
    MilkeyWay нравится это.
  7. MilkeyWay

    MilkeyWay Постоялец

    Регистр.:
    11 июл 2011
    Сообщения:
    130
    Симпатии:
    10
    дабы не плодить темы,задам тут вопрос,мб поможет кто:

    на сервер приходят в таком виде,как их обрабатывать?(что-то мне подсказывает-json изначально неправильный...)

    Код:
    {"m":"f,l"}
     
  8. grave_bird

    grave_bird Создатель

    Регистр.:
    20 авг 2015
    Сообщения:
    25
    Симпатии:
    17
    MilkeyWay нравится это.
  9. MilkeyWay

    MilkeyWay Постоялец

    Регистр.:
    11 июл 2011
    Сообщения:
    130
    Симпатии:
    10