Whitelist a set of properties from a multidimensional json array and delete the rest

帅比萌擦擦* 提交于 2019-12-24 04:05:16

问题


For examples sake i'll use a github api response as my data input.

https://api.github.com/users/unsalted/repos

I have a list of properties I want to keep, the rest I want to discard because I want to keep the output i'm generating considerably more compact.

How can I achieve my goal without doing this:

      for (var i = tagged.length - 1; i >= 0; i--) {
          delete tagged[i].private;
          delete tagged[i].owner.gravatar_id;
          delete tagged[i].owner.url;
          delete tagged[i].owner.followers_url;
          delete tagged[i].owners.following_url;
          delete tagged[i].gravatar_id;
          delete tagged[i].private;
          delete tagged[i].private;
          delete tagged[i].private;
          delete tagged[i].private;
          delete tagged[i].private;
          delete tagged[i].private;
          delete tagged[i].private;
          delete tagged[i].private;
          delete tagged[i].private;
          delete tagged[i].private;
          delete tagged[i].private;
          delete tagged[i].private;
          delete tagged[i].private;
          delete tagged[i].private;
          delete tagged[i].private;
          delete tagged[i].private;
          delete tagged[i].private;
          delete tagged[i].private;

      };

I am using lodash in the project so lodash solutions are more than welcome.

For times sake I didn't fill out the rest of the values but you get the idea...


回答1:


For a given object, you can use _.pick to keep only properties that you specify; and then you can map that over your collection. So, you end up with:

tagged = _.map(tagged, function (t) {
    return _.pick(t, ['properties', 'to', 'keep']);
});


来源:https://stackoverflow.com/questions/29811147/whitelist-a-set-of-properties-from-a-multidimensional-json-array-and-delete-the

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!