5

我在板上挖掘的所有问题并没有真正回答我的问题。所以我会问这里的专家。首先,非常感谢您继续阅读。我真的很欣赏 Stackoverflow 的全部意义,希望我现在可以做出贡献,因为我是会员。

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

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

{
  desktop:{
    title:300,
    rev:200
  }
}

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

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

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

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

4

1 回答 1

3

欢迎来到 Stackoverflow。你没有写任何你得到的错误信息,所以我假设如下。

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

编辑

var grid = {
    "name": "desktop",
    "columns": [
        {
        "id": "icons",
        "width": 50},
    {
        "id": "title",
        "width": 200},
    {
        "id": "name",
        "width": 300},
    {
        "id": "revision",
        "width": 400}
    ]
};

var columns = grid.columns;
var gridName = grid.name;

var colWidths = {};

// CHANGE HERE
colWidths[gridName] = {}; 

$.each(columns, function(c) {

   var col = columns[c];
   var colname = col.id;
   var colwidth = col.width;

   // CHANGE HERE
   var thisGrid = colWidths[gridName];
   if(!thisGrid[colname]) thisGrid[colname] = 0;

   thisGrid[colname] += colwidth;

});

//alert(colWidths.desktop.title);​
document.write(JSON.stringify(colWidths));

// RESULT:
// {"desktop":{"icons":50,"title":200,"name":300,"revision":400}}
于 2012-04-08T15:05:38.293 回答