从jQuery每个循环创建JSON

Pau*_*aul 5 javascript jquery json

我在董事会中挖出的所有问题并没有真正回答我的问题.所以我会问这里的专家.首先,非常感谢你阅读.我真的很感激Stackoverflow的一切,希望我现在可以贡献我是一名成员.

我想动态创建一个JSON对象,基于从另一个JSON对象设置的变量,每个循环使用jQuery.我认为我的语法和我对这些东西的了解有点偏差.

我想最终得到以下JSON结构:

{
  desktop:{
    title:300,
    rev:200
  }
}
Run Code Online (Sandbox Code Playgroud)

"桌面"是来自另一个不在此循环中的JSON对象的值,我可以称之为没问题,实际上它实际上是我在另一个JSON对象上设置的名称值.我循环遍历一个名为columns的对象中的数组,但是想要设置一个包含所有宽度的单独对象,因为列是可调整的,并且可以通过我将其推送到的另一个框架访问,我想保留这些宽度.

我试图在循环中做到这一点:

var colWidths = {};
$.each(columns, function(i) {
    colWidths.desktop.title = columns[i].width;
});
Run Code Online (Sandbox Code Playgroud)

我可以成功警告列[i] .width.我遇到的问题是创建和访问它.我似乎所做的一切似乎都是正确的但事实并非如此.也许是我或我的设置?你能告诉我如何正确编码吗?或者我可以创建一个Javascript对象,如果这是不可能的.提前致谢!

Mar*_*arc 3

欢迎来到 Stackoverflow。您没有写出任何收到的错误消息,因此我假设如下。

\n\n
// prepare the object correctly first\nvar colWidths = {\n   desktop: {\n      title: 0\n   }\n};\n// then ADDING each value with += instead of = \n// (because in your code you will just have the last value)\n$.each(columns, function(i) {\n    colWidths.desktop.title += columns[i].width;\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

编辑

\n\n
var grid = {\n    "name": "desktop",\n    "columns": [\n        {\n        "id": "icons",\n        "width": 50},\n    {\n        "id": "title",\n        "width": 200},\n    {\n        "id": "name",\n        "width": 300},\n    {\n        "id": "revision",\n        "width": 400}\n    ]\n};\n\nvar columns = grid.columns;\nvar gridName = grid.name;\n\nvar colWidths = {};\n\n// CHANGE HERE\ncolWidths[gridName] = {}; \n\n$.each(columns, function(c) {\n\n   var col = columns[c];\n   var colname = col.id;\n   var colwidth = col.width;\n\n   // CHANGE HERE\n   var thisGrid = colWidths[gridName];\n   if(!thisGrid[colname]) thisGrid[colname] = 0;\n\n   thisGrid[colname] += colwidth;\n\n});\n\n//alert(colWidths.desktop.title);\xe2\x80\x8b\ndocument.write(JSON.stringify(colWidths));\n\n// RESULT:\n// {"desktop":{"icons":50,"title":200,"name":300,"revision":400}}\n
Run Code Online (Sandbox Code Playgroud)\n