$(...).. map(...)。reduce不是函数

时间:2016-07-26 19:55:21

标签: javascript jquery arrays

我正在尝试使用map& amp计算页面中几个元素的高度之和。降低。由于未知原因,这给我带来了以下异常:

  

VM52933:2未捕获的TypeError:$(...)。map(...)。reduce不是a   函数(...)

$('.items')
    .map( (index,slide) => $(slide).height() )
    .reduce( (prev, next) => prev + next, 0 )

.map返回一个有效的数组:

[48, 48, 48, 75, 48]

如果我单独执行地图( [48,48,48,75,48] .reduce(...)),它可以正常工作。 我在这里做错了什么?

2 个答案:

答案 0 :(得分:8)

这是因为当你做$(' .items')时它是一个数组结构而不是数组。如果您看到原型itof NodeList类型的广告,它没有减少方法。如果你从Array.from传递它,那么它会将它转换为正确的数组,你将能够应用reduce,map和所有其他数组函数。

可在

找到更多详情

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from

做类似

的事情
Array.from($('.items'))
.map( (slide) => $(slide).height() )
.reduce( (prev, next) => prev + next, 0 );

答案 1 :(得分:0)

尝试一下:

$('.items')
    .toArray()
    .map( (index,slide) => $(slide).height() )
    .reduce( (prev, next) => prev + next, 0 );

感谢@thomas指出这一点。