Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript对象为Google图表创建新对象_Javascript - Fatal编程技术网

使用JavaScript对象为Google图表创建新对象

使用JavaScript对象为Google图表创建新对象,javascript,Javascript,我正在尝试使用谷歌的图表资源来绘制一些数据。它希望数据采用某种格式,例如: var data = google.visualization.arrayToDataTable([ ['Year', 'Sales', 'Expenses'], ['2004', 1000, 400], ['2005', 1170, 460], ['2006', 660, 1120], ['2007', 1030, 540] ])

我正在尝试使用谷歌的图表资源来绘制一些数据。它希望数据采用某种格式,例如:

var data = google.visualization.arrayToDataTable([
    ['Year', 'Sales', 'Expenses'],
    ['2004',  1000,      400],
    ['2005',  1170,      460],
    ['2006',  660,       1120],
    ['2007',  1030,      540]
]);
据我所知,它希望第一个系列包含“x”轴,后跟表示“y”轴数据点的任意数量的项

我的数据来自我的后端,如下所示:

更新(获取图表数据的代码):

function GetChartData(ni, dn, cn) {
    $.ajax({
        url: '/Dashboard?handler=QualityTests' + '&NodeId=' + ni + '&DomainName=' + dn + '&ComputerName=' + cn,
        success: function (json) {
            google.charts.setOnLoadCallback(drawChart(json))
        }
    })
}
我现在只想为“x”轴绘制
averageJitterInMs
,为“y”轴绘制
dateTime
(我最终将在页面的其他地方使用其余数据;可能用于其他图表)

那么,有没有一种优雅的方法可以从我的数组(可能有数百个数组项)中提取这些值,从而满足Google图表的数据需求?我的意思是,如何从JavaScript数组中获取两个键/值对,以便将其以图表资源所需的正确格式放置(请参见附图)

我已经尝试在客户端循环数组以提取这两个键/值对,但是Google charting api给了我一个错误:

不是数组


这是否有必要,或者我是否可以通过编程方式获取键/值对以提供
arrayToDataTable
方法?

您可以使用现有的内容构建任何数组。我制作了一个虚拟数据,向你展示如何实现你想要的

这里有
array
,有两个我们想要选择的选项(value1,value2)

然后我们对一个数组执行一次排序,并将结果分配给
resultArray

在map中,我们使用从每个元素中提取
value1
value2

现在我们有了一个数组

const数组=[
{
值1:'sadfsadf',
值2:“asdasdas”,
额外:123123
},
{
值1:'sadfasadsadf',
值2:“asdasdas”,
额外:123123
},
{
值1:'例如',
值2:“asdssdas”,
额外:124
},
{
值1:'sadfsadf',
值2:'sd',
额外:123123
},
{
值1:'sf',
值2:'sf',
额外:123123
}
];
让resultArray=array.map(e=>{
设{value1,value2}=e;
返回[值1,值2];
});

console.log(resultArray)myArray[0]
这样的索引从数组中访问任何值。向我们展示您试图使用的代码Sure thing…我也对问题进行了一些更新。据我所知,我需要用一种与源数组完全不同的格式构建一个数组。查看显示键/值数组的图像以及图表的预期格式。我将更新问题,以包括我是如何尝试这一点的……给我一些。请使用一个片段,以便我们可以重用它来作出回答。我希望这一个是您需要的(检查控制台的结果),它解释了错误
而不是数组
它是一个对象,您必须循环遍历它的值
对象。值
或将其转换为和数组这看起来不错。但有一个问题,如果我的源数据(其中一个数值)显示为字符串,是否可以将其转换为数字?举个例子,想象一下,如果“123123”的字面意思是“123123”,那么您可以在构建数组时转换类型吗?在JS中,转换为数字是通过在前面加上
+
来实现的。例如,
+'123'==123
。您可以在映射回调中生成值,然后在arrayExcellent中返回它们。这成功了!我还必须使用
arr.unshift([“DateTime”,“AverageJitterInMs]”)来定义我的列,但我有一个图形!!:)@Jasonhave MSFT最好避免
unshift
,因为它比
push
更难操作。您可以首先创建一个具有初始列的数组,然后将新值推送到该数组中。或者,您可以使用数组分解来
取消移位
,但据我所知,它应该更为优化。就像
newArr=[newValue,…oldArr]