underscore.js の reduce メソッドは、'memo' 値がスカラーであると想定しているのに対し、Ruby は一般的なオブジェクトを受け入れるようです。これはバグでしょうか、underscore.js の制限でしょうか、それとも何かおかしなことでしょうか?
Ruby 1.9.3 での reduce の簡単な例を次に示します。
irb(main):020:0> a = [1, 1, 2, 2]
=> [1, 1, 2, 2]
irb(main):021:0> a.reduce([]) {|accum, nxt| accum.push(nxt)}
=> [1, 1, 2, 2]
これは、_.jsを使用した同等のコードであると私が信じているものです
var _ =Underscore.load();
function tryReduce() {
var a = [1, 1, 2, 2]
var b = _.reduce(a, function(out, nxt) {
return out.push(nxt);
}, [])
Logger.log(b)
}
Googleスクリプトでは、コードは
TypeError: Cannot find function push in object 1. (line 6, file "tryingStuff")
ただし、このコードは実行され、正しい結果 1006 が返されます。
var _ =Underscore.load();
function tryReduce() {
var a = [1, 1, 2, 2]
var b = _.reduce(a, function(out, nxt) {
return out + nxt;
}, 1000)
Logger.log(b)
}