2014-01-15 98 views
1

我有一些代碼我想最終放入一個JSON對象中。但首先我想創建一個JavaScript對象,並在該對象內添加一個值數組。聽起來很簡單,但我的方法似乎錯了。首先我創建一個基本對象,設置幾個字段。最後,迭代一堆複選框,然後,如果將該值檢查到數組。將一個數組添加到一個Javascript對象中

在最後一步,我需要添加該數組到我的對象(myData),然後JSONify它。

任何想法,我可以做到這一點,似乎myData.push(過濾器);不起作用...

請注意,對象本身不是一個數組,我想將一個數組放入對象中。

 var myData = new Object(); 

     myData.deviceId = equipId; 

     myData.dateTo = dateTo 
     myData.dateFrom = dateFrom; 
     myData.numResults = $("#numResults").val(); 
     var i=0; 
     var filters = []; 
     $('input[type=checkbox]').each(function() { 
       if (this.checked) { 
        allData += $(this).val() + ","; 
        filters[i] = { 
         filterIds: $(this).val() 
        }; 
        ++i; 
       } 
      }); 

     myData.push(filters); 
+1

推不是對象,它是爲陣列 – Cilan

回答

0

這不是如何將項目添加到一個對象,改變

myData.push(filters);

myData.filters = filters;

而且,也許改變= new Object= {}。沒有區別,但它更易於閱讀,因爲文字符號佔用更少的空間。

瞭解更多關於Array.prototype.push

+0

謝謝你的工作。 – user3196063

+0

@ user3196063記得最終接受! – Cilan

0

使用push將元素添加到filters陣列。使用屬性分配將另一個屬性添加到myData對象。

var myData = { 
     deviceId: equipId, 
     dateTo: dateTo, 
     dateFrom: dateFrom, 
     numResults: $("#numResults").val() 
    }; 
    var filters = []; 
    $('input[type=checkbox]').each(function() { 
     if (this.checked) { 
      allData += $(this).val() + ","; 
      filters.push({ 
       filterIds: $(this).val() 
      }); 
     } 
    }); 

    myData.filters = filters; 

BTW,不要使用new Object()創建一個對象,使用{}

0

刪除需要額外的數組和i。

var myData = {} 

myData.deviceId = equipId; 

myData.dateTo = dateTo 
myData.dateFrom = dateFrom; 
myData.numResults = $("#numResults").val(); 
myData.filters = []; 
$('input[type=checkbox]').each(function() { 
    if (this.checked) { 
     allData += $(this).val() + ","; 
     myData.filters.push({ 
      filterIds: $(this).val() 
     }); 
    } 
}); 
相關問題