[英]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;
});
});
}
deepClone
和indexBy
(来自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.