【发布时间】:2018-08-24 06:30:36
【问题描述】:
我有以下输入数组(这是一个 Javascript Object[] 数组响应):
[
{index:1, headerCSV:"Name", dataFields: ["Name", "Id"]},
{index:2, headerCSV:"Id", dataFields: ["Test", "Test 1"]},
{index:3, headerCSV:"fname", dataFields: ["Test", "Test 1"]},
{index:4, headerCSV:"lname", dataFields: []},
]
我正在尝试将其转换为以下数组:
[
{"header" : 1, "field" :"Name"},
{"header" : 1, "field" :"Id"},
{"header" : 2, "field" :"Test"},
{"header" : 2, "field" :"Test 1"},
{"header" : 3, "field" :"Test"},
{"header" : 3, "field" :"Test 1"}
]
在结果数组中,我需要将header 与输入数组index 一起放入field,我需要使用输入数组的dataFields 数组进行构造.我已尝试使用以下代码:
var CSVHeadersAndFields = /* The input array */;
var headerFieldMappingJSON = [];
for(var i=0; i<CSVHeadersAndFields.length;i++) {
headerFieldMappingJSON[i] = {};
var selectedFields = CSVHeadersAndFields[i].dataFields;
for(var j=0; j<selectedFields.length;j++) {
headerFieldMappingJSON[i].header = CSVHeadersAndFields[i].index;
headerFieldMappingJSON[i].field = selectedFields[j];
}
}
但是我得到了以下结果:
[
{"header":1,"field":"Name"},
{"header":2,"field":"Test"},
{"header":3,"field":"Test"},
{}
]
我怀疑 for 循环的第一次迭代值被第二次迭代替换,而且我需要避免从输入数组中的 dataFields 的空数组构造输出数组映射。
如何做出正确的算法来转换数组?
【问题讨论】:
-
您能否以 JSON/对象文字格式而不是
dataFields:Array(2)等格式发布实际的数组响应,以便重现您的情况? -
0:{index: 0, headerCSV: "Id", dataImportFields: Array(2), dataImportFieldsStr: "Id,Name", isMap: false} 1:{index: 1, headerCSV: "名称”,dataImportFields:Array(0),dataImportFieldsStr:“”,isMap:true} 2:{index:2,headerCSV:“FirstName”,dataImportFields:Array(2),dataImportFieldsStr:“Id,Name”,isMap:false } 3:{index: 3, headerCSV: "LastName", dataImportFields: Array(0), dataImportFieldsStr: "", isMap: true}
-
你到处都有
Array(2)s... -
如果您可以显示您期望
fields的输出是其中一行的内容,那将有所帮助。 -
问题中已经有实际响应,问题中也有 dataFields.Array[2]。
标签: javascript arrays algorithm