Swanky Coder
Swanky Coder

Reputation: 1018

Appending Items from one array to each and every element of another array in Javascript

Note: I am not asking how to append data to an array!

Rather my problem is that I want to append items to each and every element of an array. Here is a part of my code:

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])

                });

            }

The array so far would be as below:

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}

So far there is no problem... But if now i have another array (Suppose that it is of the same length), I want to append the new array's elements into my existing array such that my output would be as follows:

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}

If I do:

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

it would append it as different elements in the dataset array, which is not what I am looking for.

Is the required output achieveable using JavaScript? How?

What if I want to add multiple objects to the dataset array but I do not know the number of objects to be added while compiling?

Suppose that there can be multiples arrays:

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

and so on.. and the number is unknown until runtime. I want to do something like this:(invalid code)

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!!
}

I need to name the objects dynamically somehow. Is there a way to achieve this?

Upvotes: 0

Views: 76

Answers (2)

user2575725
user2575725

Reputation:

You need to simply add new property z to existing object:

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

Upvotes: 0

Glorfindel
Glorfindel

Reputation: 22651

It's rather simple:

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

A .push call will always append more entries to the array; in this case you want to modify the existing ones.

Upvotes: 4

Related Questions