我正在尝试使用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(...)),它可以正常工作。 我在这里做错了什么?
答案 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指出这一点。