1

我試圖通過選擇使用jQuery循環,並創建值的二維數組設置對象:jQuery的麻煩發現/在多維數組

低於我的期望輸出的代碼是這樣的:

object {Monday => hours[0] = '1a-2a',hours[1] = '2a-3a', Tuesday => hours[0] = '4p-5p', hours[1] = '5p-6p'}

假設我.each選擇看起來是這樣的:

<ol id='selectable'> 
    <li data-day='Monday' data-time='1a-2a' class='ui-selected'></li> 
    <li data-day='Monday' data-time='2a-3a' class='ui-selected'></li> 
    <li data-day='Tuesday' data-time='4p-5p' class='ui-selected'></li> 
    <li data-day='Tuesday' data-time='5p-6p' class='ui-selected'></li> 
</ol> 

我試着使用下面的代碼讓我的期望輸出放我不斷收到錯誤消息:

「類型錯誤:‘在’運營商不能使用搜索未定義‘小時’(......)」

var days = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'); 
var selection = []; 
var i; 
    for (i = 0; i < days.length; ++i) { 
     $(".ui-selected", "#selectable").each(function() { 
      if($(this).attr('data-day') == days[i]){ 
       if(!(days[i] in selection)){ 
        selection.push(days[i]); 
        if(!("hours" in selection[days[i]])){ 
         selection[days[i]] = {hours:[]}; 
        } 
       } 
       selection[days[i]]['hours'].push($(this).attr('data-time')); 
      } 
     }); 
     console.log(selection); 
    } 

任何想法我在這裏做錯了什麼?

回答

1

你需要selection是一個對象,而不是一個數組,像這樣:

var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; 
var selection = {}; 
var i; 
for (i = 0; i < days.length; ++i) { 
    $(".ui-selected", "#selectable").each(function() { 
     if($(this).data('day') == days[i]){ 
      if(!(days[i] in selection)){ 
       selection[days[i]] = {}; 
       if(!("hours" in selection[days[i]])){ 
        selection[days[i]] = {hours:[]}; 
       } 
      } 
      selection[days[i]]['hours'].push($(this).data('time')); 
     } 
    }); 
    console.log(selection); 
} 

在這裏工作小提琴:https://jsfiddle.net/wehdnm20/1/

+0

謝謝...我知道我很接近 – Austin

+0

你的賭注。很高興我能幫上忙 :) – Drey