如何在多维数组中使用数组?

时间:2014-05-16 01:57:52

标签: javascript arrays

如果我有这样的数组:

var phpintojsArray = [["1","20"]];

和...我也有一个multid-array:

var data = [[1,20], [4, 20], [7, 55], [9, 10], [9, 10]];

如何将phpintojsArray添加到数据数组中?我想要:

var data = [[phpintojsArray], [1,20], [4, 20], [7, 55], [9, 10], [9, 10]];

实现这一目标的一种方法是什么?

澄清 - 试图操纵图表中的数据

这有效:

    /* Bar Chart */
    var data = [[1, 10],[3, 60], [5, 20], [7, 50], [9, 10]];

    // Initialize Bars Chart
    $.plot(BarChart, [
        { data: data, bars: { show: true, fillColor: { colors: [{ opacity: 1 }, { opacity: 1 }] } }, label: 'Example label' } ],
        {
            legend: {
                backgroundColor: '#f6f6f6',
                backgroundOpacity: 0.8
            },
            colors: ['#39d5db'],
            grid: {
                borderColor: '#cccccc',
                color: '#999999',
                labelMargin: 10
            },
            yaxis: {
                ticks: 5
            },
            xaxis: {
                tickSize: 1
            }
        }
    );

这不起作用:

var phpintojsArray = <?= json_encode($sales); ?>;
    var two = [3, 60];
    var three = [5, 20];
    var four = [7, 50];        
    var five = [9, 10];


    /* Bars Chart */
    var data = [[phpintojsArray], [two], [three], [four], [five]];

    // Initialize Bars Chart
    $.plot(BarChart, [
        { data: data, bars: { show: true, fillColor: { colors: [{ opacity: 1 }, { opacity: 1 }] } }, label: 'Example label' } ],
        {
            legend: {
                backgroundColor: '#f6f6f6',
                backgroundOpacity: 0.8
            },
            colors: ['#39d5db'],
            grid: {
                borderColor: '#cccccc',
                color: '#999999',
                labelMargin: 10
            },
            yaxis: {
                ticks: 5
            },
            xaxis: {
                tickSize: 1
            }
        }
    );

为什么?

3 个答案:

答案 0 :(得分:2)

您可以使用splice插入元素:

data.splice(0, 0, phpintojsArray);

答案 1 :(得分:1)

  

这有效:

/* Bar Chart */  
var data = [[1, 10],[3, 60], [5, 20], [7, 50], [9, 10]];
  

这不起作用:

/* Bars Chart */
var data = [[phpintojsArray], [two], [three], [four], [five]];
  

为什么?

因为这两个表达式产生不同的结构。在第一个中,您有两个级别的嵌套数组(大数组中的小数组)。在第二个中,您有三个级别的嵌套数组。

一个简单的console.log会告诉你差异。

确保您的数据结构正确。将其更改为:

var data = [two, three, four, five];

(如果仍然不清楚,括号[]定义一个新数组)

关于如何预置phpintojsArray的问题,您可以这样做:

Array.prototype.unshift.apply(data, phpintojsArray);

答案 2 :(得分:0)

你可以在javascript中使用eval。

例如:

var data = [[eval(“phpintojsArray”)],[eval(“two”)],[eval(“three”)],[eval(“four”)],[eval(“five”)) ]];