Node.js + TSV格式

在我的节点应用程序中,我正在运行查询并获取结果。 我必须将结果格式化为我所需的方式….

考虑我的查询结果如下所示:

[ { id_0: 356, name_0: 'xxxxx', id_1: 33, name_1: null, id_2: 602, name_2: 'yyyyyyy', collecteddate: '31/03/2011', value: '{"value1": "0.92", "value2": "3728104", "value3": "43", "value4": "0.66", "value5": "1050", "value6": "0.20"' }, { id_0: 356, name_0: 'xxxx', id_1: 33, name_1: null, id_2: 603, name_2: 'yyyyyyyyyyy', collecteddate: '31/03/2011', value: '{"value1": "inf", "value2": "4646732", "value3": "100", "value4": "0.88", "value5": "26705", "value6": "-1.61"'] 

从这我必须格式化为tsv。

所以我使用下面的代码:

 sequelize.query(query).success(function(results) { results.forEach(function(elem, i){ var keys = []; var values = []; var value = results[i].value; value = JSON.parse(value); for(var prop in value){ keys.push(prop); values.push(value[prop]); } results[i].value = values; results[i].key = keys; }) results = tsv.stringify(results); 

通过使用上面的代码,我得到的输出为:

 id_0 name_0 id_1 name_1 value key 356 xxxxxx 33 yyyy 0.6,3455,3.5,45.0 value1,value2,value3 

但我需要输出为:

 id_0 name_0 id_1 name_1 value key 356 xxxxxx 33 yyyy 0.6 value1 356 xxxxxx 33 yyyy 3455 value2 etc.... 

我怎么能做到这一点。如果需要,我准备提供更多的细节。帮助我解决这个问题。提前感谢。

你必须为每个值创build一个对象,并把它放在一个新的数组中:

 var newResults = []; results.forEach(function(elem, i){ var value = JSON.parse(elem.value); function createObj(key, value) { var obj = {}; for(var k in elem) { obj[k] = elem[k]; } // add key obj.key = key; // overwrite value obj.value = value; return obj; } // loop through the values for(var prop in value){ newResults.push(createObj(prop, value[prop])); } }); results = tsv.stringify(newResults); 

这是jsFiddle