gpt4 book ai didi

javascript - 需要一些关于如何将十六进制颜色值转换为 rgb() 的提示

转载 作者:行者123 更新时间:2023-11-30 18:44:40 25 4
gpt4 key购买 nike

我刚开始阅读Object-Oriented JavaScript 并且被困在一个练习中。

在第 91 页上,它要求编写一个函数,将十六进制颜色转换为其等效的 RGB 颜色(例如“rgb(0,0,255)”)。它要求您拉入包括“#”在内的完整字符串。

读完他花在解释数据类型、循环、条件和函数上的两章后,我不知道如何在不作弊和使用某种字符串函数的情况下解析十六进制值——他甚至都不会覆盖在这一点上。

有没有一种方法可以仅使用他在书中演示的函数和方法来完成此练习?如果输入以下代码,他要求 javascript 返回 "rgb(0,255,0)":

var a = getRGB("#00FF00");
a;

我假设您需要使用循环将十六进制值分解为 r、g 和 b 值的数组,然后将它们重新组合到字符串中。如果可能,请不要给我完整的解决方案,但我们将不胜感激任何有用的提示。感谢您的帮助。

最佳答案

我注意到你说没有任何字符串方法。以下是如何仅使用 Array 方法来完成第一部分...

  • 使用split()将字符串转换为数组。
  • slice() 交换 substr() 调用.

但是,在现实世界中,您可以使用 substr()提取字符串的一部分。第一个参数是偏移量,第二个是要提取的字符数。

然后您可以使用 parseInt()更改数字的基数。您只需将数字(作为字符串)作为第一个参数传递,并将基数作为第二个参数传递。我选择了 16 的基数,因为这些是十六进制数。

然后您可以将返回值与 rgb(x,x,x) 字符串部分连接起来,您就可以开始了:)

您可以将鼠标悬停在下方以查看代码(如果您遇到困难)。顺便说一句,有人知道如何制作 block 级代码剧透吗?

var getRGB = 函数(rgb) { var r = rgb.substr(1, 2), g = rgb.substr(3, 2), b = rgb.substr(5, 2);
返回 '​​rgb(' + parseInt(r, 16) + ',' + parseInt(g, 16) + ',' + parseInt(b, 16) + ')';

jsFiddle .

一旦你弄清楚了这一点,下一步可能是允许函数接受浏览器允许的 RGB 的短格式,即你的示例 #00FF00 可以作为 #0F0 传递。

一些提示...

  • 首先使用rgb.length检查字符串长度。
  • 根据长度更改您的 substr() 调用。
  • 构建传递给 parseInt() 的字符串,使 F 变为 FF

关于javascript - 需要一些关于如何将十六进制颜色值转换为 rgb() 的提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5798868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com