这个问题是关于改进工作代码。我有一个函数showLabels,它接受一个值,遍历一个对象,并通过将值与对象键进行比较来定义要返回的标签。
showLabels = (value) => {
Object.keys(this.state.labels).forEach( key => {
if (value <= key) this.tooltip = this.state.labels[key];
});
return this.tooltip;
}
问题:是否有可能使这更简洁?特别是将函数的值赋给this.tooltip然后在外部函数中返回它似乎不必要地冗长。
示例
基于评论,这是一个例子:
this.state.labels = {0: "Smallest amount", 50: "In the middle", 100: "Top"}
value = 33
//showLabels(value=33) should return "In the middle"
答案 0 :(得分:2)
Object.entries
showLabels = value => Object.entries(this.state.labels)
// sort pairs by key
.sort(([keyA], [keyB]) => keyA > keyB)
.find(([key]) => key > value)[1]
&#13;
BTW请记住,无法保证按键的迭代顺序。因此,假设您要查找第一个大于值的标签,则需要对标签进行排序。
答案 1 :(得分:0)
showLabels = (value) => {
let tooltip, { labels } = this.state
Object.keys(labels).forEach( key => {
if (value <= key) tooltip = labels[key];
})
return tooltip;
}
&#13;
这样的事情更简洁。你需要在这里使用Object.keys()
吗?它很慢。
无论如何,我在开始时添加了变量声明和解构。