0

我有一个输出十六进制值的变色工具。我需要的是将最终表单上的值更改为颜色名称。有几个输出要更改,颜色名称列表有 1,512 个条目。因此,例如,我的输出之一是 cp-swbluesbbg-output,如果它返回一个值 #006a66,那么它应该转换为“Poseiden”。

输出字符串是:

    function(event, color) {
$('.cp-swbluesbbg-output').text(color.formatted);
    /*returns the value i need to convert. i.e. #006a66*/

我的 var 设置如下(固定为更简单的格式,总共 1,512 个条目):

    var newName = {
    "#006A66" : "Poseidon SW6762",
    "#006A84" : "Blue Nile SW6776",
    "#006B55" : "Starboard SW6755",
    "#006E7F" : "Maxi Teal SW6769"} ] /*this list is 1,512 entries long*/

我已经尝试了几次正常字符串搜索的迭代,但似乎都没有工作。我对此很陌生,并且很难进行搜索,该搜索将根据每种颜色的输出返回颜色名称。任何帮助将不胜感激。

4

2 回答 2

0

newName看起来像一个 json 数组.. 由于您使用的是 jquery,您可以使用$.parseJSON()然后在您的函数中获取颜色作为参数,您可以找到颜色的名称,newName[color]其中color是十六进制代码。

于 2013-07-12T20:19:14.670 回答
0

使用您当前的设置,获取值的最快方法是遍历整个对象,直到找到您想要的值然后突破。像这样的东西:

for (var currentColorPair in newName) {
    if (newName.hasOwnProperty(currentColorPair)) {
        if (newName[currentColorPair][hexValue]) {
            return newName[currentColorPair][hexValue];
        }
    }
}

return "Color does not exist";

但是,如果您可以将“newName”的结构更新为更简单的数组,如下所示:

var newName = {
    "#006A66" : "Poseidon SW6762",
    "#006A84" : "Blue Nile SW6776",
    "#006B55" : "Starboard SW6755",
    "#006E7F" : "Maxi Teal SW6769"};

然后你可以简单地这样称呼它:

if (newName[hexValue]) {
    return newName[hexValue];
}
else {
    return "Color does not exist";
}

. . . 或者,更简单地说,像这样:

return (newName[hexValue]) ? newName[hexValue] : "Color does not exist";
于 2013-07-12T20:40:14.300 回答