微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用下划线过滤掉嵌套对象并返回数组

如何解决使用下划线过滤掉嵌套对象并返回数组

const newData = _.pluck(_.flatten(_.values(file)),'Message')

这是从这个巨大的嵌套对象返回一个包含所有消息值的数组的正确方法,这很棒。但是我想排除在对象中也设置为 local = true 的值。

我只想返回 ['LAJDH','NPSABA']。基本上我正在做的是编写测试在玩笑 这将打开数千个文件并返回给我一个数组以供使用。我正在导出这个对象,以便在我的笑话测试中的每次迭代中都需要。

这意味着尽可能快地执行此操作会很棒。

示例数据:

{ onorder: [],onGo: [],onDelivery:
   [ { Trigger: 'Ready To dispatch',Channel: 'Mail',Message: 'AJDSA',local: true
       Recipient: [Array],Filter: [Array] },{ Trigger: 'Ready to Delivery',Message: 'LAJDH',Recipient: [Array],Filter: [Array] } ],onDelay:
   [ { Trigger: 'Delay',Message: 'ABJSH',local: true,onDelivered:
   [ { Trigger:
       'Delivered',Message: 'NPSABA',Filter: [Array] } ] }

解决方法

_.reject 是 Underscore 的否定过滤函数。您需要做的就是将其夹在 _.flatten_.pluck 之间。请注意,此代码使用 iteratee shorthand

const newData = _.pluck(_.reject(_.flatten(_.values(file)),{local: true}),'Message');

提示:像这样的长表达式使用 _.chain 变得更具可读性。

const newData = _.chain(file)
    .values()
    .flatten()
    .reject({local: true})
    .pluck('Message')
    .value();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。