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

Javascript 在jQuery中使用一个关联数组而不是两个索引数组,javascript,jquery,html,arrays,associative-array,Javascript,Jquery,Html,Arrays,Associative Array,我正在创建一个函数,从一个值返回下一个最近的数字和关联的颜色,比如如果该值是500,该函数将返回600及其关联的颜色米色。我使用两个数组,一个用于数字,另一个用于颜色。我想知道这样做是否正确。我是否可以使用一个关联数组来获得结果,而不是使用两个单独的数组 而不是: var array = [50,100,200,400,600,1000,1500] var color = {50:"red",100:"yellow",200:"Golden",400:"Black",600:"beige",10

我正在创建一个函数,从一个值返回下一个最近的数字和关联的颜色,比如如果该值是
500
,该函数将返回
600
及其关联的颜色
米色
。我使用两个数组,一个用于数字,另一个用于颜色。我想知道这样做是否正确。我是否可以使用一个关联数组来获得结果,而不是使用两个单独的数组

而不是:

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"};
下面是一个例子:

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 getClosestValues = function(a, x) {
    var lo, hi;
    for (var i = a.length; i--;) {
        if (a[i] <= x && (lo === undefined || lo < a[i])) lo = a[i];
        if (a[i] >= x && (hi === undefined || hi > a[i])) hi = a[i];
    };
    var text = [];
    var text = [x+'/'+hi,color[hi]];
    return text;
}

var print = getClosestValues(array,1411);
$('.area').html('<div style="background:'+print[1]+'">'+print[0]+'</div>');
var数组=[5010020040060010001500]
颜色变量={50:“红色”,100:“黄色”,200:“金色”,400:“黑色”,600:“米色”,1000:“粉色”,1500:“绿色”};
var getClosestValues=函数(a,x){
罗华,你好,;
for(var i=a.length;i--;){
如果(a[i]=x&(hi==undefined | | hi>a[i])hi=a[i];
};
var text=[];
变量文本=[x+'/'+hi,颜色[hi]];
返回文本;
}
var print=getClosestValues(数组,1411);
$('.area').html(''+print[0]+'');

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

当然可以。这是您的一把小提琴,它在关联数组键上迭代,而不是使用单独的数组:

因为您使用的是jQuery,所以我们可以使用它们的nice
每个
迭代器。我们的策略只是查看关联数组中的每个键/值对(其中键像以前一样存储在
i
每次迭代中)。我们找到与提供的
x
最近的
i
,然后返回它

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>');
var color={50:“红色”,100:“黄色”,200:“金色”,400:“黑色”,600:“米色”,1000:“粉色”,1500:“绿色”};
var getClosestValues=函数(a,x){
罗华,你好,;
$.each(a,函数(i,名称){
如果(i=x&(hi==undefined | | hi>i))hi=i;
});
变量文本=''+x+'/'+hi+',''+color[hi]+'';
返回文本;
}
var print=getClosestValues(颜色,1411);
print=print.split(',');
$('.area').html(''+print[0]+'');

使用数字作为关联数组键可能会遇到麻烦,因为它们不是索引。最好使用字符串。