davla
12/16/2022, 1:21 PMaPartners = [
{
"partnerid":1,
"partnername": "Partner 1",
"partnercode": "pt1",
...
"configsettings: {
...
}
},
{
"partnerid":2,
"partnername": "Partner 2",
"partnercode": "pt2",
...
"configsettings: {
...
}
}
];
allowedKeys = ["partnername","partnercode"];
How to process the above (arrayReduce/Map etc) to produce an array of structs with just partnername and partnercode in each struct. I tried this but it doesn’t work as needed:
allowedKeys = ["partnername","partnercode"];
for(partner IN aPartners) {
objKeys = structKeyArray(partner);
result = objKeys.reduce(function(accumulator, ele) {
if( allowedKeys.findNoCase(ele) ) {
obj = {
"#ele#": partner[ele]
};
return accumulator.append(obj);
} else {
return accumulator;
}
}, []);
};
What should I be using?Tim
12/16/2022, 1:32 PMTim
12/16/2022, 1:33 PMdavla
12/16/2022, 1:34 PMTim
12/16/2022, 1:36 PMAdam Cameron
davla
12/16/2022, 2:32 PMdavla
12/16/2022, 2:33 PMdavla
12/16/2022, 2:45 PMAdam Cameron
justTheImportantStuff = aPartners.map(
(partner) => allowedKeys.reduce(
(subStruct, key) => substruct.insert(key, partner[key]),
{}
)
)davla
12/16/2022, 2:50 PMdavla
12/16/2022, 2:52 PMdavla
12/16/2022, 3:29 PMpublic array function filterAllowedObjectProperties(
required array objArray,
array allowedProperties=[]
) {
var loc = {};
if(!arrayLen(arguments.allowedProperties)) {
return arguments.objArray;
}
loc.allowedProps = arguments.allowedProperties;
loc.filteredProps = arguments.objArray.map(
(obj) => loc.allowedProps.reduce(
(subStruct, key) => subStruct.insert(key, obj[key]),
{}
)
)
return loc.filteredProps;
}Adam Cameron
var loc thing is a bit "CF9".
You know there's a local scope now, yeah?Adam Cameron
davla
12/16/2022, 3:41 PMAdam Cameron
public array function filterAllowedObjectProperties(
required array objArray,
array allowedProperties=[]
) {
if(!arguments.allowedProperties.len()) {
return arguments.objArray;
}
return arguments.objArray.map(
(obj) => allowedProperties.reduce(
(subStruct, key) => subStruct.insert(key, obj[key]),
{}
)
)
}
(I've also switched from arrayLen to just len as the rest of the code is using obj.method not function(obj), so keeping it uniform; but that's a small thing)davla
12/16/2022, 3:50 PM