【发布时间】:2016-02-02 13:00:04
【问题描述】:
我有一个 JSON 对象可供我使用,如下所示:
{
"Fields": [
{
"table": "catalogue",
"field": "Histo_Qtite",
"type": "STRING"
},
{
"table": "catalogue",
"field": "id_article",
"type": "STRING"
},
{
"table": "contact",
"field": "contact_email",
"type": "STRING"
},
{
"table": "contact",
"field": "contact_firestname",
"type": "STRING"
},
{
"table": "customer",
"field": "activity_type",
"type": "STRING"
},
{
"table": "customer",
"field": "adress",
"type": "STRING"
}
],
"Tables": [
{
"entity": "CATALOGUE",
"table": "catalogue"
},
{
"entity": "CLIENT",
"table": "customer"
},
{
"entity": "CONTACT",
"table": "contact"
}
]
}
我正在尝试根据表的名称为每个“字段”对象创建一个多维数组。为此,我尝试了 javascript,并产生了以下代码:
var objectPREFIX = "object_",
selectedObject = '',
objectArray = [],
objectImport = [],
OFImport = [],
TablesLength = jsonImport.Tables.length,
FieldsLength = jsonImport.Fields.length;
for (i = 0; i < FieldsLength; i++) {
selectedObject = objectPREFIX + jsonImport.Fields[i].table;
OFImport[selectedObject] = {
tableName : jsonImport.Fields[i].table,
FieldName : jsonImport.Fields[i].field,
fieldType : jsonImport.Fields[i].type
}
for (j = 0; j < TablesLength; j++) {
if(OFImport[selectedObject].tableName == jsonImport.Tables[j].table) {
objectImport.push(OFImport[selectedObject]);
objectArray[selectedObject] = OFImport[selectedObject];
}
}
}
console.log(objectArray);
据我了解,问题是OFImport[selectedObject] 包含“字段”的每个对象迭代,并且仅在控制台中显示最后一个对象。
我想知道如何在“字段”和“表”之间进行比较条件,以将每次迭代都放在单独的数组中。
这是一个证明问题的FIDDLE(抱歉,如果我无法清楚地表达我的解释)。
【问题讨论】:
-
既然你使用
OFImport作为对象,你也应该将它初始化为对象:OFImport = {}(不是OFImport = [])
标签: javascript jquery arrays json multidimensional-array