Json 使用过滤器,每个过滤器都位于lodash上
我有这个JSON字符串Json 使用过滤器,每个过滤器都位于lodash上,json,lodash,Json,Lodash,我有这个JSON字符串 [ { uri : '/someuri/one', title : 'Title 1', displayLocation : 'ACTION_MENU', masterData : 'LOCATION', iconClass : 'icon-class-1' }, { uri : '/someuri/two', title : 'Title 2', displayLocation : 'ACTI
[
{
uri : '/someuri/one',
title : 'Title 1',
displayLocation : 'ACTION_MENU',
masterData : 'LOCATION',
iconClass : 'icon-class-1'
},
{
uri : '/someuri/two',
title : 'Title 2',
displayLocation : 'ACTION_MENU',
masterData : 'LOCATION',
iconClass : 'icon-class-2'
},
{
uri : '/someuri/three',
title : 'Title 3',
displayLocation : 'ACTION_MENU',
masterData : 'JOB',
iconClass : 'icon-class-3'
},
{
uri : '/someuri/four',
title : 'Title 4',
displayLocation : 'SUMMARY',
masterData : 'LOCATION',
iconClass : 'icon-class-4'
}
]
我正在把它转换成
[
{
iconClass : 'icon-class-1',
id : 'anythingUnique',
text : 'Title 1'
},
{
iconClass : 'icon-class-2',
id : 'anythingUnique',
text : 'Title 2'
}
]
使用以下代码
function myCustomFilter(inputJSONStr) {
return _.each(inputJSONStr.filter(function(action){
return action.masterData === 'LOCATION' && action.displayLocation === 'ACTION_MENU';
}), function (action) {
return [{iconClass: action.iconClass, id: 'anythingUnique', text: action.title}];
});
但是它返回给我JSON字符串
[
{
uri : '/someuri/one',
title : 'Title 1',
displayLocation : 'ACTION_MENU',
masterData : 'LOCATION',
iconClass : 'icon-class-1'
},
{
uri : '/someuri/two',
title : 'Title 2',
displayLocation : 'ACTION_MENU',
masterData : 'LOCATION',
iconClass : 'icon-class-2'
}
]
有人能指出我做错了什么吗?您可以使用map来执行此操作:
_(inputJSONStr).filter({masterData: 'LOCATION', displayLocation: 'ACTION_MENU'})
.map(function(a) {
return {iconClass: a.iconClass, id: 'anythingUnique', text: a.title};
}).value();
我对你的过滤器做了一点修改,但是如果你愿意的话,你可以按照你的方式来做,我使用了一种功能性的链接方法,但是如果这让你更舒服的话,你可以强制地去做。Map有效地用返回的元素替换数组元素