Ember.js 如何在Ember中创建自定义枚举器?
我正在寻找一种方法,以Ember.js 如何在Ember中创建自定义枚举器?,ember.js,Ember.js,我正在寻找一种方法,以sumenumerator为例,创建用于收集的自定义枚举数-多次使用reduce()仅求和值并不是一个好的解决方案 EnumerableAPI说明枚举器必须实现nextObject方法,并具有length属性。但并不是所有的内置枚举器都有它们 我尝试重新打开Ember.Enumerable类,但失败了 例如,如何基于reduce(或如何创建的资源)创建sum枚举器将非常有帮助 编辑 Ember具有Em.computed.sum,但我找不到它作为正常的可枚举对象。我认为您混淆
sum
enumerator为例,创建用于收集的自定义枚举数-多次使用reduce()
仅求和值并不是一个好的解决方案
Enumerable
API说明枚举器必须实现nextObject
方法,并具有length
属性。但并不是所有的内置枚举器都有它们
我尝试重新打开Ember.Enumerable
类,但失败了
例如,如何基于reduce
(或如何创建的资源)创建sum
枚举器将非常有帮助
编辑
Ember具有
Em.computed.sum
,但我找不到它作为正常的可枚举对象。我认为您混淆了枚举函数和可枚举对象
可枚举的对象必须实现nextObject
和length
。这些是诸如链表、队列、堆栈和集合之类的东西。基本上,您希望迭代的数据结构
枚举函数可以应用于可枚举对象,如sum
、min
、max
您不应该将此方法添加到Ember.Enumerable,因为并非所有的Enumerable都可以求和。一个数字列表可以,但是你如何计算一组水果的总和呢
也就是说,这应该回答您的问题:
这个问题让人困惑,你能提供一些关于你想做什么的ember-ish伪代码吗?根据要求更新问题。一个js-bin示例可以帮助其他人加入并找到解决方案。很好!现在我明白了!:)不幸的是,当我尝试像这样对数组求和时:
[1,2,3].sum()
我得到了错误“UncaughtTypeError:undefined不是函数”。
# custom enumarator I want to have
sum = @get('items').sum(0)
# current solution
sum = @get('items').reduce ((prev, curr) -> prev + curr,) 0