foreach中对象的下一个索引值

时间:2016-10-13 09:02:21

标签: javascript jquery object foreach

我在我的代码中定义了这个名为rates.rates:

的对象
{ AUD="1.4553",  BGN="1.9558",  BRL="3.5256"}

我有以下$ .each循环:

$.each( rates.rates, function( index, value ){

  console.log(index);

});

我一直在尝试没有成功,也可以控制下一个或上一个索引(如果它们当然存在)。任何帮助都非常感谢。

3 个答案:

答案 0 :(得分:1)

不是迭代对象,而是将其键作为数组并迭代。然后,您可以在数组索引中添加和减去。

var keys = Object.keys(rates.rates);
$.each(keys, function(index, key) {
    var prevkey = index > 0 ? keys[index-1] : null;
    var nextkey = index < keys.length-1 ? keys[index+1] : null;
    console.log(prevkey, key, nextkey);
});

答案 1 :(得分:0)

JS对象没有已定义的顺序,它们(根据定义)是一组未排序的键值对。

但是你有办法做你想做的事。你可以这样做。

var keys=Object.keys(rates.rates);

for(vari=0; i<keys.length;i++)
{       
    console.log(i);  
}

答案 2 :(得分:0)

您可以使用modulo获得下一个或上一个。有了这个,你可以自动循环。

请尝试以下:

rates={
    rates:{ "AUD":"1.4553",  "BGN":"1.9558",  "BRL":"3.5256"}
  };
var keys = Object.keys(rates.rates);
$.each(keys, function(index, key) {
    if(index == 0){index=keys.length};
    var prevkey = (index-1) % keys.length; 
    var nextkey = (index+1) % keys.length; 
    console.log(prevkey, key, nextkey);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>