Accessing properties of an array of objects
15,558
Solution 1
ES6 version:
const numbers = objects.map( o => o.number );
Enjoy.
Solution 2
Use array.map:
var numbers = objects.map(function(o) { return o.number; });
Solution 3
In JavaScript, you can't, because there is no such array. If you've got an array of objects, well, each object is its own precious little snowflake. You can of course transfer the "number" values to a new array, but it'd definitely be a new array.
Some toolkits (Prototype and maybe Functional and Underscore) have a "pluck()" facility that's designed to do exactly what you want, but they too are forced to create new arrays.
function pluck(array, property) {
var i, rv = [];
for (i = 0; i < array.length; ++i) {
rv[i] = array[i][property];
}
return rv;
}
Then:
var arrayOfNumbers = pluck(originalArray, "number");
Solution 4
for (i=0; i<myArrayOfObjects.length; i++) {
doWhatever(myArrayOfObjects[i].number);
}
Related videos on Youtube
Author by
Dave
Updated on June 04, 2022Comments
-
Dave almost 2 years
pretty basic question I think, but I couldn't find info on that.
Through d3 I parse a csv and each object look like this
name: "whatever" number: "52"
How can I access the array of all the properties "number" as an array without creating a new array and pushing each element?
-
Jonathan M over 12 yearsDo you mean each object looks like:
{"name":"whatever","number":52}
and you have an array of these objects? -
Boopathi Rajaayou would directly have access to the number field. just use something[i]["number"] or something[i].number ... even looping through is possible . Is there any other specific reason for you to have it as a separate array rather than accessing it directly through a way mentioned earlier...??
-
-
RightSaidFred over 12 yearsPerhaps worth enhancing
pluck
to accept a callback that is invoked in the loop and receives the value of the given property of each object. The array could still be used to return an array of values returned from the callback. -
Pointy over 12 yearsFunny, @RightSaidFred, I was just thinking that :-) Then I realized that that function would really be what you'd normally call "map()", and you could certainly implement "pluck()" in terms of "map()".
-
RightSaidFred over 12 yearsVery true. It's just a less flexible map! Duh!!