Extract a property value from each element of an object array.
var pluck = require( '@stdlib/utils/pluck' );
Extracts a property value from each element of an object array
.
var arr = [
{'a':1,'b':2},
{'a':0.5,'b':3}
];
var out = pluck( arr, 'a' );
// returns [ 1, 0.5 ]
The function accepts the following options
:
- copy:
boolean
indicating whether to return a new data structure. Default:true
.
By default, the function returns a new data structure. To mutate the input data structure (e.g., when input values can be discarded or when optimizing memory usage), set the copy
option to false
.
var arr = [
{'a':1,'b':2},
{'a':0.5,'b':3}
];
var out = pluck( arr, 'a', {'copy':false} );
// returns [ 1, 0.5 ]
var bool = ( arr[ 0 ] === out[ 0 ] );
// returns true
-
The function skips
null
andundefined
array elements.var arr = [ {'a':1,'b':2}, null, undefined, {'a':0.5,'b':3} ]; var out = pluck( arr, 'a' ); // returns [ 1, , , 0.5 ]
-
Extracted values are not cloned.
var arr = [ {'a':{'b':2}}, {'a':{'b':3}} ]; var out = pluck( arr, 'a' ); // returns [ {'b':2}, {'b':3} ] var bool = ( arr[ 0 ].a === out[ 0 ] ); // returns true
To prevent unintended mutation, use copy.
var copy = require( '@stdlib/utils/copy' ); var arr = [ {'a':{'b':2}}, {'a':{'b':3}} ]; var out = pluck( arr, 'a' ); // returns [ {'b':2}, {'b':3} ] // Perform a deep copy: out = copy( out ); var bool = ( arr[ 0 ].a === out[ 0 ] ); // returns false
var randu = require( '@stdlib/math/base/random/randu' );
var round = require( '@stdlib/math/base/special/round' );
var pluck = require( '@stdlib/utils/pluck' );
var arr;
var tmp;
var out;
var i;
var j;
// Generate a 100x5 2d-array...
arr = new Array( 100 );
for ( i = 0; i < arr.length; i++ ) {
tmp = new Array( 5 );
for ( j = 0; j < tmp.length; j++ ) {
tmp[ j ] = round( randu()*100.0*(j+1.0) );
}
arr[ i ] = tmp;
}
// Pluck the 3rd column:
out = pluck( arr, 2 );
console.log( out );