簡體   English   中英

將構建數組的PHP代碼轉換為JS,現在highcharts不起作用-我做錯了什么?

[英]Converted PHP code that built an array to JS and now highcharts doesn't work - what did I do wrong?

因此,我過去在JS中使用了一段PHP代碼來構建此字符串:

<snip>
    series: [{
        marker: {
            fillColor:'#66aaff'
        },
        color: '#66aaff',
        name: 'Person 1',
        data: [{x:0, y: 12},{x:1, y: 16},{x:2, y: 18},{x:3, y: 14}]
    }, {
        marker: {
            fillColor:'#ff8888'
        },
        color: '#ff8888',
        name: 'Person 2',
        data: [{x:0, y: 26},{x:1, y: 17},{x:2, y: 22},{x:3, y: 17}]
    }]
<snip>

我想將JS移至外部文件,因此現在將一些變量傳遞給JS,並以此構建數組:

var aSeries = [];
for (i = 0; i < aIDs.length; i++) {
    aSeries.push({
        marker: {
            fillColor: '#' + aSeriesColors[i]
        },
        color: '#' + aSeriesColors[i],
        name: aNames[aIDs[i]],
        data: [data[aIDs[i]].join(',')]
    });
}

console.log(aSeries)向我顯示,這“正確地”為我提供了一個JS對象,其中包含我要查找的所有屬性。

然后,我將上面的第一個代碼塊更改為:

<snip>
    series: aSeries
<snip>

我沒有JS錯誤,但是我的圖形無法正確顯示。 系列名稱的圖例顯示正確,但是x軸上僅放置了一項(而不是4),並且未繪制任何數據點。

console.log(數據):

Object {154: Array[4], 156: Array[4], 307: Array[4], 994: Array[4]}
154: Array[4]
0: "{x:0, y: 26.145225241042}"
1: "{x:1, y: 17.211534431451}"
2: "{x:2, y: 22.184885666481}"
3: "{x:3, y: 17.898072988406}"
length: 4
__proto__: Array[0]
156: Array[4]
0: "{x:0, y: 12.555414124567}"
1: "{x:1, y: 16.300627296478}"
2: "{x:2, y: 18.353667038483}"
3: "{x:3, y: 14.082830741251}"
length: 4
__proto__: Array[0]
307: Array[4]
0: "{x:0, y: 37.967636688174}"
1: "{x:1, y: 30.79271274292}"
2: "{x:2, y: 34.540574456219}"
3: "{x:3, y: 37.892991347838}"
length: 4
__proto__: Array[0]
994: Array[4]
0: "{x:0, y: 4.1734334079504}"
1: "{x:1, y: 0.35625969235927}"
2: "{x:2, y: 6.3747908533185}"
3: "{x:3, y: 0.62718142794101}"
length: 4
__proto__: Array[0]
__proto__: Object

JS中的數據,現在我首先將其生成為適當的PHP數組(為簡潔起見,將其剪切為第一個索引:

Object {154: Array[4], 156: Array[4], 307: Array[4], 994: Array[4]}
154: Array[4]
0: Object
x: "0"
y: "26.145225241042"
__proto__: Object
1: Object
x: "1"
y: "17.211534431451"
__proto__: Object
2: Object
x: "2"
y: "22.184885666481"
__proto__: Object
3: Object
x: "3"
y: "17.898072988406"
__proto__: Object
length: 4
__proto__: Array[0]

您的問題在這里:

data: [data[aIDs[i]].join(',')]

.join返回一個字符串,這不是您所需要的。 您可能需要:

data: data[aIDs[i]]

由於data[aIDs[i]]已似乎是一個數組。

但是,由於它是一個字符串數組,所以最后一步是:

data: data[aIDs[i]].map(JSON.parse)

這應該解析data[aIDs[i]]每個單獨的字符串,並生成{x: number, y: number}元素的數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM