我的代码打破了jsbin和repl.it?

时间:2015-12-03 00:37:46

标签: javascript

在(重新)执行本教程http://reactivex.io/learnrx/时,我发现repl.it和jsbin.com都拒绝这样的功能性JavaScript。

movieLists.
        concatMap(function(category) {
            return category.videos.map(function(video){

                return video.boxarts
                    .reduce(function(acc,cur){
                        return (acc.width*acc.height)<(cur.width*cur.height) ? acc:cur
                    }).map(function(boxart){
                        return {id:video.id, title:video.title}
                    });


            })
        })

结果

"TypeError: video.boxarts.reduce(...).map is not a function
    at dihuwo.js:105:24
    at Array.map (native)
    at dihuwo.js:100:36
    at dihuwo.js:24:14
    at Array.map (native)
    at Array.concatMap (dihuwo.js:18:3)
    at dihuwo.js:99:3
    at dihuwo.js:113:3
    at https://static.jsbin.com/js/prod/runner-3.35.5.min.js:1:13616
    at https://static.jsbin.com/js/prod/runner-3.35.5.min.js:1:10537"

为什么代码here on jsbin失败,而repl here接受它是合法的?

我错过了什么愚蠢的事情?我再说一遍......代码正在传递教程页面。到目前为止,对其他任何代表进行测试都是不可能的。

P.S。所有辅助函数(例如concatMap)都在此代码之上定义,因此不存在问题。

1 个答案:

答案 0 :(得分:1)

它不起作用,因为在该教程中,它们会覆盖Array.prototype.reduce

它们的实现与标准实现的工作方式不同,它总是返回一个数组。

一般来说这样做是不好的做法,必须避免。