【问题标题】:Javascript creating multidimensional array dynamicallyJavascript动态创建多维数组
【发布时间】:2014-03-20 14:41:15
【问题描述】:

我已经为此苦苦挣扎了一天多,但无法正常工作。我想创建一个多维 javascript 数组来保存过滤器变量,这些变量必须被解析为 php 以进行 AJAX 调用。目标是制作产品过滤器并过滤掉不适用于过滤器变量的产品。

最后一部分是 php,我知道如何解决。但我正在努力创建一个包含所有选定过滤器变量的 javascript 数组。

我有一个filter_ID 和一个filter_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 中工作。一些帮助表示赞赏! Offcourse 我一直在看论坛上的其他主题,但找不到任何匹配的东西。

【问题讨论】:

  • 试试这个var items = [[1,2],[3,4],[5,6]];
  • 而不是为什么你不使用普通对象键:值更容易
  • 如果根据用户点击的复选框动态填充数组。

标签: javascript arrays multidimensional-array


【解决方案1】:

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); } } }); });

【讨论】:

  • 问题是脚本启动时没有数组。该数组是根据用户输入创建的!
  • 那么从一个空对象开始,然后简单地向它添加属性?
  • 是的!我想我可以用那个代码做到这一点!更新了我的 JSFIDDLE,并且似乎在那个 (jsfiddle.net/7WKcR) 上运行良好。现在我将尝试在我的代码中实现它!
  • 很高兴有帮助:)
  • 我发布了错误的 JSFIDDLE URL,这里是正确的。 jsfiddle.net/7WKcR/4
猜你喜欢
  • 2011-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 1970-01-01
  • 2014-08-14
  • 2017-12-10
相关资源
最近更新 更多