【问题标题】:Creating javascript array (multidimentional) or javascript object is a better approach创建 javascript 数组(多维)或 javascript 对象是一种更好的方法
【发布时间】:2012-11-24 11:29:20
【问题描述】:

下面是json结构:

jsonResponse
    Folder 01
        Product 01 - Folder 01
        Product 02 - Folder 01
        Product 03 - Folder 01
    Folder 02
        Product 01 - Folder 02
        Product 02 - Folder 02
        Product 03 - Folder 02
    Folder 03
        Product 01 - Folder 03
        Product 02 - Folder 03
        Product 03 - Folder 03
    Folder 04
        Product 01 - Folder 04
        Product 02 - Folder 04
        Product 03 - Folder 04  

我的要求是将文件夹名称和产品存储在各自的文件夹中。我可以将文件夹名称存储在一个数组中,但需要将产品存储在相应的文件夹中,这是我无法完成的。我正在使用 jquery1.8 读取 json 响应,然后使用每个函数创建文件夹数组。

非常感谢您的帮助。

提前致谢

【问题讨论】:

  • 有什么问题?首先如何创建结构?源数据来自哪里?您使用each 的代码是什么样的?
  • 下面是json结构:....这不是JSON
  • Guffa 建议的数据结构(如下)对我来说看起来不错。如果您控制 JSON 的来源(请显示您的 JSON - 您显示的只是文本),您可以从该格式开始,而不是读取它并使用 .each() 循环遍历它。
  • 对不起朋友,我没有粘贴正确的json结构,下次我会确保这样做。

标签: javascript json jquery multidimensional-array


【解决方案1】:

我会创建一个文件夹对象数组,其中每个对象都包含一个产品对象数组。这样可以灵活地保存您合理需要发送的有关文件夹和产品的任何其他数据,例如产品的价格。

结构示例:

var folders = [
  {
    name: 'Folder 01',
    products [
      { name : 'Product 01' },
      { name : 'Product 02' },
      { name : 'Product 03' }
    ]
  },
  {
    name: 'Folder 02',
    products [
      { name : 'Product 01' },
      { name : 'Product 02' }
    ]
  }
];

从数据构建数组的示例:

var folders = [];

// data that you would get from looping the JSON data:
var folderName = 'Folder 01'
var products = ['Product 01', 'Product 02'];

var prod = [];
for (var i = 0; i < products.length; i++) {
  prod.push({ name: products[i] });
}
var folder = { name: folderName, products: prod };
folders.push(folder);

【讨论】:

  • 感谢 Guffa,但我怎么能存储所有其他产品。文件夹名称是动态的,我的意思是我没有任何控制权。我们正在创建一个“Whatchlist”,用户可以在其中将产品名称存储在用户可以创建的默认文件夹或自定义文件夹中。
  • @PrashantShetty:遍历解析的 JSON 数据,然后获取每个文件夹的名称,然后遍历该文件夹的产品。我无法提供任何用于循环 JSON 的确切代码,因为我不知道它是什么样的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-17
  • 2018-06-17
  • 1970-01-01
  • 2012-01-28
  • 2021-06-16
  • 1970-01-01
相关资源
最近更新 更多