javascript - 比较一个变量和对象,根据值的不同返回元素

标签 javascript ecmascript-6 ecmascript-5

由于我在 JS 方面不是那么好,我会很感激这里的帮助...

我有这个数组:

segments = [
    { state: 33, color: "red" },
    { state: 66, color:"yellow" },
    { state: 100, color: "green" }
]

三个变量:

goal = 100
currentValue = 26
percentage = currentValue * 100 / goal

我正在尝试编写一个函数来比较对象中的百分比和状态,并返回伴随状态的颜色。例如:

如果百分比 < 33,应返回“红色”。

如果百分比介于 33 和 66 之间,则必须返回“黄色”。

如果百分比 > 66 或 > 目标,必须返回“绿色”。

到目前为止我有这个,但它不起作用:

defineChartColor = (currentActivity, goal) => segments.find(segments => segments.state > percentage).color

最佳答案

您需要检查 state , 不是 value带有 <= 的对象.等号对于找到精确值很重要,例如 100 的最后一个.

var segments = [{ state: 33, color: "red" }, { state: 66, color:"yellow" }, { state: 100, color: "green" }],
    goal = 100,
    currentValue = 26,
    percentage = currentValue * 100 / goal,
    getColor = (percentage, goal) => segments.find(({ state }) => percentage === goal
        ? state === 100
        : percentage <= state 
    ).color;

console.log(getColor(33, 100));
console.log(getColor(66, 100));
console.log(getColor(100, 100));
console.log(getColor(20, 20));

关于javascript - 比较一个变量和对象,根据值的不同返回元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52041736/

相关文章:

javascript - 如何防止用户操纵 AJAX 代码的 'data:' 部分?

javascript - 无法将 webpack 捆绑的 UMD 库作为 ES6 导入导入

javascript - 如何检测 ECMAscript 版本?

javascript - 带有 iOS Swift 请求超时的 Express.js 服务器

javascript - 使用 gmail api 获取与草稿邮件关联的已发送邮件

javascript - 当 div 中没有 anchor 标记时,在 React 中隐藏该 div

javascript - 我怎样才能从捕获中返回一个 Promise 然后拒绝下一个捕获?

javascript - 转换最接近 ES6 的 jQuery 为 bg 添加 CSS

C++11 正则表达式多次匹配捕获组

javascript - 使用 ES5 的 AOT(提前)编译