在jQuery中使用一个关联数组而不是两个索引数组

时间:2014-11-16 20:35:29

标签: javascript jquery html arrays associative-array

Fiddle Example

我正在创建一个函数来返回下一个最接近的数字和一个值的相关颜色,比如值是500,该函数将返回600及其相关颜色{ {1}}。我使用两个数组,一个用于数字,另一个用于颜色来完成。我想知道这是否是正确的做事方式。我可以只使用一个关联数组来获得结果,而不是两个单独的数组吗?

而不是:

beige

是否可以使用类似的东西:

var array = [50,100,200,400,600,1000,1500]
var color = {50:"red",100:"yellow",200:"Golden",400:"Black",600:"beige",1000:"pink",1500:"green"};

以下是例子:

var array ={50:"red",100:"yellow",200:"Golden",400:"Black",600:"beige",1000:"pink",1500:"green"};

2 个答案:

答案 0 :(得分:1)

当然可以。这是你的小提琴的一个分支,迭代关联数组键而不使用单独的数组:http://jsfiddle.net/65nb1cmo/1/

由于您正在使用jQuery,我们可以使用他们的漂亮each迭代器。我们的策略只是查看关联数组中的每个键/值对(其中键在每次迭代中存储在i中),如前所述。我们找到与提供的i最接近的x,然后将其返回。

var color = {50:"red",100:"yellow",200:"Golden",400:"Black",600:"beige",1000:"pink",1500:"green"};

var getClosestValues = function(a, x) {
    var lo, hi;
    $.each(a, function(i, name) {
        if (i <= x && (lo === undefined || lo < i)) lo = i;
        if (i >= x && (hi === undefined || hi > i)) hi = i;
    });
    var text = ''+x+'/'+hi+','+color[hi]+'';
    return text;
}

var print = getClosestValues(color,1411);
print = print.split(',');
$('.area').html('<div style="background:'+print[1]+'">'+print[0]+'</div>');

答案 1 :(得分:0)

您可以使用Object.keys(color)获取包含对象中所有键的数组。