【发布时间】:2020-10-23 06:28:09
【问题描述】:
样本数组
var myItems = [{height:500, width:400},{height:500, width:800},{height:500, width:700}]
而不是做
if(myItems[0].height !== myItems[1].height && myItems[0].height !== myItems[2].height && myItems[1].height !== myItems[2].height){
// do smth about it
}
对于更大的数组,这段代码会变得很荒谬,所以我玩了这个
if (myItems.reduce((x,y)=>x.height!==y.height)){
// do the same thing
}
问题是,这总是返回true,即使上面的值已经到位,所有项目都有相同的height值。
【问题讨论】:
-
所有的结果是什么?
-
这不是
reduce的工作方式。函数中的第一个参数是聚合器,第二个参数是下一项。聚合器的初始值取自传递给reduce的第二个参数,或数组中的第一项;您可能希望从布尔值而不是对象开始。看起来您要求的是 n² 比较(每个对象与每个对象)而不是顺序比较,因此这不适用于单个reduce。 -
检查this post它可能对你有帮助
-
@user4642212 我愿意接受任何有关其外观的建议。
标签: javascript arrays reduce