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

Javascript 如何动态填充(关联)数组,javascript,jquery,arrays,multidimensional-array,javascript-objects,Javascript,Jquery,Arrays,Multidimensional Array,Javascript Objects,我需要的是,基于changepos的值(我们称这个值为N,我想填充racks元素中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=

我需要的是,基于changepos的值(我们称这个值为N,我想填充racks元素中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()}
        ]}
}
if(!(机架中的trimdevID))
{
警报(“定义…”);
document.getElementById('devLabel').value.trim()
机架[trimdevID]={
标签:document.getElementById('devLabel').value.trim(),
朋克:[
这里的例子是(var i=0;i
changePos=4;4
如果(!(机架中的trimdevID))
{
警报(“定义…”);
document.getElementById('devLabel').value.trim()
机架[trimdevID]={
标签:document.getElementById('devLabel').value.trim(),
朋克:[]
}
对于(变量i=0;i

决定是否需要-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
    };
}
if(!(机架中的trimdevID))
{
警报(“定义…”);
var label=document.getElementById('devLabel').value.trim();
var punkt=[];
对于(变量i=0;i

您还调用了
document.getElementById().value.trim()
这对结果没有任何影响。我将其更改为设置一个变量,然后在稍后的对象创建中使用该变量。

您实际需要更改哪些值?
标签
?整个
punkt
或其中只有一个元素?只有一个元素来自punkt,在第n个位置(changepos)我还认为将其他元素定义为0更安全,我的意思是:例如,如果我需要更改第二个元素,我会将第一个元素填充为{x:0,y:0}。这实际上是在“我尝试了什么”代码中循环使用的
:O@BeNdErR在python中,可能是在js no way=)中不是,得到一个语法错误:(谢谢你,伙计,这正是我想要的,有了这个,我也可以省去for循环,直接把它放在位置上,而下面的那些将是未定义的!谢谢你也改变了;在此之后,索引变成了racks[trimdevID].punkt[changingPos]={x:$(this.index(),y:$(this.parent().index()}
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
    };
}