【问题标题】:Convert underscore in ES6 Methods [duplicate]在ES6方法中转换下划线[重复]
【发布时间】:2018-10-24 18:59:08
【问题描述】:

我有一个使用 AngularJS、Redux 和 Underscore 的现有代码库。在该代码库中,我有以下代码:

const selectedBroker = _.findWhere(state.brokers, { brokerId: action.payload });
  return state.merge({
    selectedBroker,
    selectedBrokerId: action.payload,
  });

我想将其转换为 es6 方法。我认为find() 是合适的,但不知道如何。 你能帮我一点吗?谢谢!!

这也不在这个任务的范围内,但我在这里看到了更多的下划线方法。喜欢_.reject, _.contains, _.map。您是否也可以在类似于上述代码示例的上下文中转换它。

【问题讨论】:

  • 您可以使用babel-core 生成AST,转换指向_.method 调用的节点并将AST 编译回代码。要使用 find 代替 findWhere,以下可能会执行 selectedBroker = state.brokers.find(({brokerId}) => brokerId === action.payload)

标签: javascript angularjs ecmascript-6 redux underscore.js


【解决方案1】:

如下所示,array.find 将返回数组中的第一个匹配元素。

let selectedBroker = state.brokers.find(broker => broker.brokerId == action.payload);

【讨论】:

  • 谢谢。我有个问题。在本例中,您使用了t=>t.brokerId。你能解释一下逻辑吗?那部分代码总是让我感到沮丧和困惑。我的意思是t 是什么?
  • @DimitrisEfstathiadis 这可能更有意义:state.brokers.find(broker=>broker.brokerId == action.payload); 这只是分配给每个循环条目的变量名称。
  • t 是对象,其中 t.brokertId 是 brokerId 持有的值,将与 action.payload 进行比较,如果匹配 find 将返回匹配元素
  • 谢谢两位。这有很大帮助..
  • @DimitrisEfstathiadis 标记如果答案有帮助
猜你喜欢
  • 2011-10-19
  • 1970-01-01
  • 2021-01-30
  • 1970-01-01
  • 1970-01-01
  • 2021-07-04
  • 1970-01-01
  • 2016-05-14
  • 2011-08-28
相关资源
最近更新 更多