我在董事会中挖出的所有问题并没有真正回答我的问题。所以我会问这里的专家。首先,非常感谢你阅读。我非常感谢Stackoverflow的全部内容,希望我现在可以为我成为会员做出贡献。
我想基于jQuery每个循环从另一个JSON对象设置动态创建一个JSON对象。我认为我的语法,可能是我对这些东西的了解有点过了。
我想最终得到以下JSON结构:
{
desktop:{
title:300,
rev:200
}
}
“桌面”是来自另一个不在此循环中的JSON对象的值,我可以称之为没问题,实际上它实际上是我在另一个JSON对象上设置的名称值。我循环遍历一个名为columns的对象中的数组,但是想要设置一个包含所有宽度的单独对象,因为这些列是可调整的,可以通过另一个框架访问,我将它推到那里,我希望保留这些宽度。
我试图在循环中做到这一点:
var colWidths = {};
$.each(columns, function(i) {
colWidths.desktop.title = columns[i].width;
});
我可以成功提醒列[i] .width。我遇到的问题是创建和访问它。我似乎所做的一切似乎都是正确的但事实并非如此。也许是我或我的设置?你能告诉我如何正确编码吗?或者我可以创建一个Javascript对象,如果这是不可能的。提前谢谢!
答案 0 :(得分: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}}