-
Notifications
You must be signed in to change notification settings - Fork 664
How to match the sub property in an objects array
agershun edited this page Dec 28, 2014
·
1 revision
Source: StackOverflow.com
Suppose there is an array of strings which are nothing but property names I want to get from each object in array of objects
var wantedPropArray=["prop1","prop2","prop3.name"];
Below is the objects array
var objectArray = [
{"prop1":"prop1Data1","prop2":"prop2Data1","prop3":{"name":"Tom","age":"24","class":"graduate"},"prop4":"prop4Data1","prop5":"prop5Data1"},
{"prop1":"prop1Data2","prop2":"prop2Data2","prop3":{"name":"Cat","age":"24","class":"graduate"},"prop4":"prop4Data2","prop5":"prop5Data2"}
{"prop1":"prop1Data3","prop2":"prop2Data3","prop3":{"name":"Tom","age":"24","class":"graduate"},"prop4":"prop4Data3","prop5":"prop5Data3"}
{"prop1":"prop1Data4","prop2":"prop2Data4","prop3":{"name":"Tom","age":"24","class":"graduate"},"prop4":"prop4Data4","prop5":"prop5Data4"}
]
for( var item in objectArray ){
var objectArrayOnlySelectedProperties = _.pick(objectArray[item] , wantedPropArray);
}
Suppose for first iteration lets see objectArrayOnlySelectedProperties data, I am expecting it to give me the result something like this
objectArrayOnlySelectedProperties = {"prop1":"prop1Data1","prop2":"prop2Data1","prop3.name":"Tom"};
How to create pick() method to match the sub properties of each object in an array?
Below you can see and test a function, which construct a query to the array of nested objects. It supports nested arrays with depth more than 2:
function alaPluck(data, props) {
var sel = props.map(function(p){
return p.replace(/[\.]/g,'->')+' AS ['+p+']';
}).join(',');
return alasql('SELECT '+sel+' FROM ?',[data]);
}
Try this example at jsFiddle
© 2014-2024, Andrey Gershun & Mathias Rangel Wulff
Please help improve the documentation by opening a PR on the wiki repo