我试图创建一个时间表,也告诉我哪一天的人有一个更大的数字。这张桌子运转良好,但我想不出如何在不做大量if的情况下每天进行比较。
这是我下面的代码(表和对象)
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(每一天)。我能这么做吗?
发布于 2022-09-23 04:13:06
您可以使用reduce和forEach的组合来迭代Time中的值,以收集每天关联人员的最大值和名称:
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})`))
发布于 2022-09-23 04:08:23
我的方法是在每一天使用三元
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”
https://stackoverflow.com/questions/73822798
复制相似问题