繁体   English   中英

强调ES6的方法

[英]Underscore methods to ES6

有人可以看看这一点,并从如何将其转换为本地JS变得有意义。

_.chain(polls).deepClone().indexBy("id").value()

我试图查找deepClone ,但无法找到它的来源。 这是我已经接管的代码,对其不太熟悉。 感谢帮助。

这是我的一个工作示例:

function loadPolls () {
    return ScheduledEventService.getPolls($scope.webcastId)
        .then(function(polls){
            $scope.originalPolls = _.chain(polls).deepClone().indexBy("id").value();
            $scope.webcast.polls = polls;

            _.each(polls, function(poll){
                poll.answers = _.map(_.range(Polls.MaxAnswers), function(i){
                    return (poll.answers && poll.answers[i]) || {};
                });

                poll.readOnly = poll.status !== "Closed" || poll.totalResponses > 0;
            });
        });
}

deepCloneindexBy (来自indexBy )都没有直接的本地等效项。

indexBy很简单:

function indexBy(object, key) {
  return Object.keys(object).reduce(result, k) {
    const value = object[k];
    result[value[key]] = value;
    return result;
  });
}

它使用reduce来遍历输入对象(实际上是遍历其键),并建立一个result对象,其键是每个子对象上id属性的值,而值是子对象本身。就像_.indexBy一样。

deepClone您将不得不找到它的某些版本。 这样有很多。

一旦有了这些,您的逻辑就是

indexBy(deepClone(polls), 'id')

如果只需要一级深度克隆,则可以将上面的行更改为

result[value[key]] = Object.assign({}, value);

然后做

indexBy(polls, 'id')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM