2012-02-07 4 views
0

я работаю внутри от $ .each и хочет, чтобы заполнить массив с переменными из каждого пунктаJQuery: Нажмите переменный массив внутри массива

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

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" 

Так что я мог бы принять, что и сделать $ .each и позволяют «Большой: черный, белый»

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

ответ

0

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

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); 
}); 
Смежные вопросы