如何创建和组织JavaScript数组?

时间:2012-11-08 16:31:46

标签: javascript jquery coldfusion

我正在使用ColdFusion 8和jQuery 1.8。

我有一些来自数据库的信息并被填充到这样的div中:

<div class='SpecInfo' data-height='10' data-width='23' data-length='156'></div>
<div class='SpecInfo' data-height='20' data-width='21' data-length='159'></div>
<div class='SpecInfo' data-height='30' data-width='25' data-length='154'></div>
<div class='SpecInfo' data-height='40' data-width='27' data-length='155'></div>
<input type='button' id='GoButton' value='Go!'>

我需要提取该信息并将其放入数组并将其传递给CFC。我有一个收集数据的功能。它看起来像这样:

// SET VARS
$GoButton = $("#GoButton"),
    SpecArray = {
        Height: [],
        Width: [],
        Length: []
    };

// GO
var go = function() {
    var $SpecInfo = $(".SpecInfo"),
        SpecInfoLen = $SpecInfo.length,
        H, 
        W,
        L;
    for (i = 0; i < SpecInfoLen; i++) {
        var H = $SpecInfo.eq(i).data('height'),
            W = $SpecInfo.eq(i).data('width'),
            L = $SpecInfo.eq(i).data('length');
        // add H,W,L values to spec array
        SpecArray['Height'].push(H);
        SpecArray['Width'].push(W);
        SpecArray['Length'].push(L);
    }
    // stringify spec array
    // pass spec array to cfc
    alert(SpecArray['Height'].length);
}
$GoButton.click(go);

这给了我一个高度数组,一个宽度数组和一系列长度。这不是我想要的。我的信息是这样组织的

[10,20,30,40]
[23,21,25,27]
[156,159,154,155]

对于每个div,我想在一个地方拥有所有属性。我想要更像这样的东西:

[10,23,156]
[20,21,159]
[30,25,154]
[40,27,155]

我做错了什么?我如何组织我的阵列?

1 个答案:

答案 0 :(得分:5)

那么为什么要将所有数据放在3个独立的数组而不是对象数组中呢?

而不是

    SpecArray['Height'].push(H);
    SpecArray['Width'].push(W);
    SpecArray['Length'].push(L);

使用

    SpecArray.push( { 'height': H, 'width': W, 'length': L } );

这会产生一系列对象,如下所示:

[
 { 'height': 10, 'width': 23, 'length': 156 },
 { 'height': 20, 'width': 21, 'length': 159 },
 { 'height': 30, 'width': 25, 'length': 154 },
 { 'height': 40, 'width': 27, 'length': 155 }
]

您必须将SpecArray初始化为数组,而不是包含3个数组的对象。