如何使用reduce()JavaScript查找多个最大大小

如何使用reduce()JavaScript查找多个最大大小,javascript,Javascript,我试图找到最大尺寸accshe=acc.width*acc.height,这不是问题。诀窍是,如果有多个最大尺寸,我如何获得它-非常重要-使用reduce()。我试图理解reduce()的来龙去脉。有人帮忙吗 const boxarts = [ { width: 200, height: 200, url: "http://cdn-0.nflximg.com/images/2891/Fracture200.jpg" }, { width: 300, height: 200

我试图找到最大尺寸
accshe=acc.width*acc.height
,这不是问题。诀窍是,如果有多个最大尺寸,我如何获得它-非常重要-使用
reduce()
。我试图理解
reduce()
的来龙去脉。有人帮忙吗

    const boxarts = [
    { width: 200, height: 200, url: "http://cdn-0.nflximg.com/images/2891/Fracture200.jpg" },
    { width: 300, height: 200, url: "http://cdn-0.nflximg.com/images/2891/Fracture300.jpg" },
    { width: 400, height: 200, url: "http://cdn-0.nflximg.com/images/2891/Fracture400.jpg" },
    { width: 500, height: 200, url: "http://cdn-0.nflximg.com/images/2891/Fracture500.jpg" },
    { width: 150, height: 200, url: "http://cdn-0.nflximg.com/images/2891/Fracture150.jpg" },
    { width: 600, height: 200, url: "http://cdn-0.nflximg.com/images/2891/Fracture600-.jpg" },
    { width: 600, height: 200, url: "http://cdn-0.nflximg.com/images/2891/Fracture600+.jpg" },
    { width: 600, height: 200, url: "http://cdn-0.nflximg.com/images/2891/Fracture600.jpg" },
    { width: 425, height: 150, url: "http://cdn-0.nflximg.com/images/2891/Fracture425.jpg" }
]

        const newReduce = boxarts.reduce(function (acc, currentValue) {

            const accSixe = acc.width * acc.height
            const curSize = currentValue.width * currentValue.height

            if (accSixe > curSize) {
                return acc
            } else {
                return currentValue
            }
        }, [])


        console.log(JSON.stringify(newReduce, null, 2))

将累加器设置为数组的对象和当前最大值:

const-boxarts=[{宽度:200,高度:200,url:http://cdn-0.nflximg.com/images/2891/Fracture200.jpg},{宽度:300,高度:200,url:http://cdn-0.nflximg.com/images/2891/Fracture300.jpg},{宽度:400,高度:200,url:http://cdn-0.nflximg.com/images/2891/Fracture400.jpg},{宽度:500,高度:200,url:http://cdn-0.nflximg.com/images/2891/Fracture500.jpg"},{宽度:150,高度:200,url:“http://cdn-0.nflximg.com/images/2891/Fracture150.jpg},{宽度:600,高度:200,url:http://cdn-0.nflximg.com/images/2891/Fracture600-.jpg},{宽度:600,高度:200,url:http://cdn-0.nflximg.com/images/2891/Fracture600+.jpg“},{宽度:600,高度:200,url:“http://cdn-0.nflximg.com/images/2891/Fracture600.jpg"},{宽度:425,高度:150,url:“http://cdn-0.nflximg.com/images/2891/Fracture425.jpg"}]
const{arr}=boxart.reduce({highest=0,arr=[]},boxart)=>{
常数{宽度,高度}=boxart;
const thisSize=宽度*高度;
if(thisSize>highest)返回{highest:thisSize,arr:[boxart]};
如果(thisSize==最高)arr.push(boxart);
返回{highest,arr};
}, {});

console.log(arr);
将累加器设置为数组的对象和当前最大值:

const-boxarts=[{宽度:200,高度:200,url:http://cdn-0.nflximg.com/images/2891/Fracture200.jpg},{宽度:300,高度:200,url:http://cdn-0.nflximg.com/images/2891/Fracture300.jpg},{宽度:400,高度:200,url:http://cdn-0.nflximg.com/images/2891/Fracture400.jpg},{宽度:500,高度:200,url:http://cdn-0.nflximg.com/images/2891/Fracture500.jpg"},{宽度:150,高度:200,url:“http://cdn-0.nflximg.com/images/2891/Fracture150.jpg},{宽度:600,高度:200,url:http://cdn-0.nflximg.com/images/2891/Fracture600-.jpg},{宽度:600,高度:200,url:http://cdn-0.nflximg.com/images/2891/Fracture600+.jpg“},{宽度:600,高度:200,url:“http://cdn-0.nflximg.com/images/2891/Fracture600.jpg"},{宽度:425,高度:150,url:“http://cdn-0.nflximg.com/images/2891/Fracture425.jpg"}]
const{arr}=boxart.reduce({highest=0,arr=[]},boxart)=>{
常数{宽度,高度}=boxart;
const thisSize=宽度*高度;
if(thisSize>highest)返回{highest:thisSize,arr:[boxart]};
如果(thisSize==最高)arr.push(boxart);
返回{highest,arr};
}, {});

console.log(arr);
IMHO这个问题不适合使用
.reduce()
。您可以非常直接地解决它,只需迭代项并将当前最大的项存储在数组中

 let maxSize = 0;
 let biggest = [];
 boxarts.forEach(function(box) {
    if (box.width * box.height > maxSize) {
      maxSize = box.width * box.height;
      biggest = [box];
    } else if (box.width * box.height === maxSize) {
      biggest.push(box);
    }
 });

阅读和推理非常简单。

我知道这个问题不适合使用
.reduce()
。您可以非常直接地解决它,只需迭代项并将当前最大的项存储在数组中

 let maxSize = 0;
 let biggest = [];
 boxarts.forEach(function(box) {
    if (box.width * box.height > maxSize) {
      maxSize = box.width * box.height;
      biggest = [box];
    } else if (box.width * box.height === maxSize) {
      biggest.push(box);
    }
 });

阅读和推理非常简单。

你说的“多个最大尺寸”是什么意思?尺寸=宽度*高度。在这种情况下,我们有三个相同最大尺寸的结果。结果应该是这样的:
[{宽度:600,高度:200,url:http://cdn-0.nflximg.com/images/2891/Fracture600-.jpg" },     {宽度:600,高度:200,url:“http://cdn-0.nflximg.com/images/2891/Fracture600+.jpg“},{宽度:600,高度:200,url:“http://cdn-0.nflximg.com/images/2891/Fracture600.jpg}]
您说的“多个最大尺寸”是什么意思?size=width*height。在这种情况下,我们有三个结果具有相同的最大大小。结果应该是这样的:
[{宽度:600,高度:200,url:http://cdn-0.nflximg.com/images/2891/Fracture600-.jpg},{宽度:600,高度:200,url:http://cdn-0.nflximg.com/images/2891/Fracture600+.jpg“},{宽度:600,高度:200,url:"http://cdn-0.nflximg.com/images/2891/Fracture600.jpg“}]
我两个答案都喜欢!我正在尝试消化它。真的很感激!我两个答案都喜欢!我正在尝试消化它。真的很感激!同意!但条件是用reduce()解决它。这是为了教育目的。我正在尝试理解reduce()的来龙去脉这是你应该在问题中包含的重要信息。同意!但条件是用reduce()解决它。这是为了教育目的。我试图理解reduce()的来龙去脉,这是你应该在问题中包含的重要信息。