将多维 json 数组中的一组属性列入白名单并删除其余部分

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

为了示例,我将使用 github api 响应作为我的数据输入。

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

我有一个我想保留的属性列表,其余的我想丢弃,因为我想保持我生成的输出更加紧凑。

不这样做我怎么能实现我的目标:

      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;

      };

我在项目中使用了 lodash,所以非常欢迎 lodash 解决方案。

有时我没有填写其余的值,但你明白了......

对于给定的 object,您可以使用 _.pick 只保留您指定的属性;然后您可以将其映射到您的 collection。所以,你最终得到:

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