jQuery: выдвигать переменные в массив внутри массива - PullRequest
0 голосов
/ 07 февраля 2012

Я работаю внутри $ .each и хочу заполнить массив переменными из каждого элемента

Размер и цвет определяются полями, выбранными из поля выбора со значением, равным L-черный (большой и черный)

var options = [];
var sizes = []; 
$(this).find('option').each( function(){
    var value = $(this).text().split('-');
    var size = value[0].replace("Size ", "");
    var color = value[1];

    if ($.inArray(size, sizes) == -1) {
        sizes.push(size);
    } 

    options.push({s:size, c:color});
});
var po = [];
$.each(options, function(i,v){
    var index = $.inArray(v.s, sizes);
    if (po[index] instanceof Array) {
        po[index].push({colors:[v.c]});
    }else{
        po[index] = [];
        po[index].push({size:v.s, colors:[v.c]});
    }
});

console.log(po);

это работает, оно выплевывает

Array[2]
    0: Object
        colors: Array[1]
            0: "Black"
        size: "L"
    1: Object
        colors: Array[1]
            0: "White"

Я бы хотел выплюнуть что-то вроде

Array[2]
    0: "L"
        colors: Array[2]
            0: "Black"
            1: "White"
    1: "M"
        colors: Array[2]
            0: "Black"
            2: "White"
            1: "Blue"

Так что я мог бы взять это и сделать $. Каждый и учесть «Large: Black, White»

Я в тупике, работаю над этим пару часов и не могу обернуть голову, любая помощь будет признательна

1 Ответ

0 голосов
/ 09 февраля 2012

Я пошел с более компактной версией кода, но она может быть неправильной. Посмотрите, поможет ли это вам:

var opts = [];
$("#form").find('option').each( function(){
    var value = $(this).text().split('-');
    var size = value[0].replace("Size ", "").replace(" ","");
    var color = value[1];
    if (typeof opts[size]=="undefined") {
        opts[size] = [];
    }
    opts[size].push(color);
});
...