如何动态填充(关联)数组

时间:2013-11-13 16:38:05

标签: javascript jquery arrays multidimensional-array javascript-objects

我需要的是,基于changepos的值(让我们调用这个值N,我想在机架元素中填写punkt的第N个位置。

机架中值的示例firebug输出

PMS02
    Object { punkt=[3], label="slow one"}

label
    "slow one"

punkt
    [Object { x="1", y="3"}, Object { x="1", y="4"}, Object { x="1", y="5"}]

0
    Object { x="1", y="3"}

1
    Object { x="1", y="4"}

2
    Object { x="1", y="5"}

JS代码:

changePos= 4; // 4 is an example here
if(!(trimdevID in racks))
{
    alert("Defining...");
    document.getElementById('devLabel').value.trim()
    racks[trimdevID] = {
        label: document.getElementById('devLabel').value.trim(),
        punkt: [{
            x: $(this).index(),
            y: $(this).parent().index()}]}
}

我尝试了什么:

if(!(trimdevID in racks))
{
    alert("Defining...");
    document.getElementById('devLabel').value.trim()
    racks[trimdevID] = {
        label: document.getElementById('devLabel').value.trim(),
        punkt: [
            for(var i=0;i<changepos-1;i++){
                {
                    x: 0,
                    y: 0}
            }
            {
                x: $(this).index(),
                y: $(this).parent().index()}
        ]}
}

2 个答案:

答案 0 :(得分:1)

您不能在数组文字中放置for循环。使用循环分配给数组元素。

if(!(trimdevID in racks))
{
    alert("Defining...");
    var label = document.getElementById('devLabel').value.trim();
    var punkt = [];
    for (var i = 0; i < changepos-1; i++) {
        punkt[i] = {x: 0, y: 0};
    }
    punkt[changepos] = {
        x: $(this).index(),
        y: $(this).parent().index(),
    };
    racks[trimdevID] = {
        label: label,
        punkt: punkt
    };
}

你还打电话给document.getElementById().value.trim()但没有对结果做任何事情。我将其更改为设置变量,然后在对象创建中使用它。

答案 1 :(得分:0)

changePos= 4; 4 is an example here
if(!(trimdevID in racks))
{
    alert("Defining...");
    document.getElementById('devLabel').value.trim()
    racks[trimdevID] = {
        label: document.getElementById('devLabel').value.trim(),
        punkt: []
    }
    for (var i = 0; i < changePos /* -1 */; i++)
        racks[trimdevID][punkt][i] = {x:0, y:0};
    racks[trimdevID][punkt][changePos /* -1 */] = {
        x: $(this).index(),
        y: $(this).parent().index()
    }    
}

决定是否需要-1。