首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何比较哪个对象的属性更大?

如何比较哪个对象的属性更大?
EN

Stack Overflow用户
提问于 2022-09-23 03:49:50
回答 2查看 41关注 0票数 -1

我试图创建一个时间表,也告诉我哪一天的人有一个更大的数字。这张桌子运转良好,但我想不出如何在不做大量if的情况下每天进行比较。

这是我下面的代码(表和对象)

代码语言:javascript
复制
let Time = {
  Person1: {
    Monday: 9,
    Tuesday: 7,
    Wednesday: 8,
    Thursday: 7,
    Friday: 7,
  },
  Person2: {
    Monday: 8,
    Tuesday: 8,
    Wednesday: 7,
    Thursday: 7,
    Friday: 9,
  },
};

console.table(Time);

我想要它显示‘人2’,如果星期一从人1是小于星期一从人2(每一天)。我能这么做吗?

EN

回答 2

Stack Overflow用户

发布于 2022-09-23 04:13:06

您可以使用reduceforEach的组合来迭代Time中的值,以收集每天关联人员的最大值和名称:

代码语言:javascript
复制
let Time = {
  Person1: { Monday: 9, Tuesday: 7, Wednesday: 8, Thursday: 7, Friday: 7 },
  Person2: { Monday: 8, Tuesday: 8, Wednesday: 7, Thursday: 7, Friday: 9 }
};

const days = Object.entries(Time).reduce((acc, [name, person]) => {
  Object.entries(person).forEach(([day, value]) => {
    acc[day] = acc[day] || { max: { value: 0, name: '' } }
    acc[day][name] = value             // not strictly required
    if (value > acc[day].max.value) {
      acc[day].max = { value, name }
    }
  });
  return acc
}, {})

Object.entries(days).forEach(([day, data]) => console.log(`${day}: ${data.max.name} (${data.max.value})`))

票数 1
EN

Stack Overflow用户

发布于 2022-09-23 04:08:23

我的方法是在每一天使用三元

代码语言:javascript
复制
let Time = {
  Person1: {
    Monday: 9,
    Tuesday: 7,
    Wednesday: 8,
    Thursday: 7,
    Friday: 7,
  },
  Person2: {
    Monday: 8,
    Tuesday: 8,
    Wednesday: 7,
    Thursday: 7,
    Friday: 9,
  },
};

console.log(Time.Person1.Monday < Time.Person2.Monday ? 'Person 1' : 'Person 2') 

以上代码将返回“Person 2”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73822798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档