如何为JavaScript数组添加columns属性,匹配CSVparse输出格式
问题描述
我之前用CSVparse函数得到了如下格式的数组,现在希望直接从JSON获取数据,不用生成CSV文件:
DATA (2) [{…}, {…}, columns: Array(4)] 0: {date: '2022-11-08 04:00:00', Ballon: '0.58', DepartPAC: '23.32', RetourPAC: '21.94'} 1: {date: '2022-11-08 04:01:00', Ballon: '0.59', DepartPAC: '23.98', RetourPAC: '21.58'} columns: (4) ['date', 'Ballon', 'DepartPAC', 'RetourPAC']
现在我想把以下列名数组作为columns属性添加到从AJAX获取的数组中:
const Colonne = ['date', 'Ballon', 'DépartPAC', 'RetourPAC'];
我试过用retour.push({columns:Colonne})或者retour.splice("Columns", 0, Colonne),但这些方法都会给数组添加数字索引的元素,得到的结果是这样的:
(2) [Array(77), {…}] 0:(77) [{…}, {…}, {…}, {…}, {…}, {…}] 1:{id: 'columns', values: Array(4)}
我的AJAX代码如下:
$( document ).ready( function(){ $.ajax({ type: 'GET', url: 'DonneesGraph.php', dataType: 'json', success: function( retour ) { // 此处处理返回的数据,存储在名为retour的JSON中 console.log( "Retour" , retour );
之后我获取了列名并构建了Colonne数组:
const Lenght =Object.keys(retour[0]).length; const Nom=Object.keys(retour[0]); console.log("Nombre de colonnes",Lenght); console.log("Nom",Nom[2]); const Colonne = ['date', 'Ballon', 'DépartPAC', 'RetourPAC'];
我的目标是给数组添加columns属性,让格式和CSVparse返回的一致。
解决方案
JavaScript里的数组本质是特殊的对象,允许直接给它添加非数字索引的自定义属性,不需要用push或splice(这两个方法是用来操作数组的元素,即数字索引的项)。
直接在AJAX的success回调里,给retour数组赋值columns属性即可:
$( document ).ready( function(){ $.ajax({ type: 'GET', url: 'DonneesGraph.php', dataType: 'json', success: function( retour ) { const Colonne = ['date', 'Ballon', 'DépartPAC', 'RetourPAC']; // 直接给数组添加columns属性 retour.columns = Colonne; console.log( "Retour" , retour ); // 此时retour的格式就和CSVparse返回的一致了 } }); });
这样操作后,retour数组的元素还是原来的那些数据对象,同时会新增一个columns属性,和CSVparse返回的结构完全匹配。
内容的提问来源于stack exchange,提问作者Tetsuochat
相关产品推荐
相关产品推荐

