簡體   English   中英

Javascript動態創建多維數組

[英]Javascript creating multidimensional array dynamically

我已經為此苦苦掙扎了一天多了,無法正常工作。 我想創建一個多維的javascript數組,其中包含必須對AJAX調用的php進行過濾的過濾器變量。 目標是制作產品過濾器並過濾掉不適用於過濾器變量的產品。

最后一部分是php,我知道如何解決。 但是我正在努力創建一個包含所有選定過濾器變量的javascript數組。

我有一個filter_IDfilter_value_ID 使用過濾器(例如尺寸),可以有不同的值,例如S,M,L,XL等。

所以我想要一個像這樣的數組:

filterArr = array(
  [4] => array(10,20,30)
  [8] => array(4)
  [20] => array(2,3, 7)
)

用戶選中復選框時,必須填充該數組。 我幾乎可以管理它,但是問題是我在數組中獲得了null項目,因為我無法在數組中獲取filterID。

我的代碼在JSFiddle上: http : //jsfiddle.net/VCfjp/

發生問題的部分在第10、11、12行:

if (!(filterID in filter)) {
  filter[filterID] = [];
}

我現在陷入困境。 我會知道如何在PHP中進行操作,但無法在javascript中工作。 感謝您的幫助! 當然,我一直在論壇上尋找其他話題,但找不到任何匹配的話題。

JS中的哈希數組被定義為對象,因此請像這樣使用它:

var object = { 4: [10,20,30], 8: [4], 20: [2,3,7] };

只需觀察發布時PHP將輸出的內容:

echo json_encode(array( [4] => array(10,20,30) [8] => array(4) [20] => array(2,3, 7) ));

您要求的代碼:

jQuery(document).ready(function($) { var hashArray = {}; $('.myCheckbox').on('change', function() { var self = $(this), checkboxId = parseInt(self.attr('data-id')), // since you used it as a number above checkboxValue = parseInt(self.val()); // since you also used it as a number above if (self.is(':checked')) { // add to array if (!hashArray.hasOwnProperty(checkboxId)) hashArray[checkboxId] = []; hashArray[checkboxId].push(checkboxValue); } else { if (hashArray.hasOwnProperty(checkboxId)) { // remove from array if it exists hashArray[checkboxId].splice(hashArray[checkboxId].indexOf(checkboxValue), 1); } } }); });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM