在Javascript

时间:2015-06-18 10:54:26

标签: javascript arrays

注意:我不是问如何将数据附加到数组中!

相反,我的问题是我想将项目附加到数组的每个元素。 这是我的代码的一部分:

dataset=[];
var xpoints=["Jan","Feb","Mar","Apr","May"];
var ypoints=[10,20,30,40,50];

    for (var i = 0; i < xpoints.length; i++) {

                dataset.push({
                    x : xpoints[i],
                    y : parseFloat(ypoints[i])

                });

            }

到目前为止,数组如下:

dataset[0] - {x:Jan,y:10}
dataset[1] - {x:Feb,y:20}
dataset[2] - {x:Mar,y:30}
dataset[3] - {x:Apr,y:40}
dataset[4] - {x:May,y:50}

到目前为止没有问题...... 但是,如果现在我有另一个数组(假设它具有相同的长度),我想将新数组的元素追加到我现有的数组中,以便我的输出如下:

var zpoints=["a","b","c","d","e"];
/*

Do something

*/

Required Output:
dataset[0] - {x:Jan,y:10,z:a}
dataset[1] - {x:Feb,y:20,z:b}
dataset[2] - {x:Mar,y:30,z:c}
dataset[3] - {x:Apr,y:40,z:d}
dataset[4] - {x:May,y:50,z:e}

如果我这样做:

for (var i = 0; i < dataset.length; i++) {
dataset.push({
    z:zpoints[i]
});
}

它会将它作为数据集数组中的不同元素追加,这不是我要寻找的。

使用JavaScript可以实现所需的输出吗?怎么样?

如果我想将多个对象添加到数据集数组但我不知道编译时要添加的对象数量会怎样?

假设可以有多个数组:

z1=["a","b","c","d","e"];
z2=["l","m","n","o","p"];
z3=...
.
.

等等..并且数字在运行时才知道。 我想做这样的事情:(无效的代码)

for(var j=0;j<length;j++) //Length will be known only during runtime
for (var i = 0; i < dataset.length; i++) {
    dataset[i].z[j] = zpoints[i];  //z[j] is invalid!!
}

我需要以某种方式动态命名对象。有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:4)

这很简单:

for (var i = 0; i < dataset.length; i++) {
    dataset[i].z = zpoints[i];
}

.push调用将始终向数组附加更多条目;在这种情况下,您想要修改现有的。

答案 1 :(得分:0)

您只需向现有对象添加新属性z

var l = zpoints.length;
while(l --)
  dataset[l].z = zpoints[l];