【问题标题】:Next index value of object in foreachforeach 中对象的下一个索引值
【发布时间】:2017-02-22 07:38:49
【问题描述】:

我在我的代码中将这个对象定义为rates.rates:

{ AUD="1.4553",  BGN="1.9558",  BRL="3.5256"}

我有以下 $.each 循环:

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

  console.log(index);

});

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

【问题讨论】:

  • 您可以将之前的索引保存在一个变量中。无法获取下一个索引。
  • 除非解释得不好,你为什么要保存网络索引,为了什么目的?让我们知道,有很多可能的答案取决于您的最终目标。
  • 您可以根据元素总数和0检查索引是否存在。
  • 您的对象语法错误。这是key: value,不是key=value
  • 在 each 之前将计数器设置为 0,然后在 each 循环的每次迭代中递增。这为您的循环提供了一个伪索引。

标签: javascript jquery object foreach


【解决方案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);
});

【讨论】:

  • 目前最好的答案,只是因为这是 OP 的要求。
【解决方案2】:

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

但是有一种方法可以让你做你想做的事。你可以这样做。

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

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

【讨论】:

    【解决方案3】:

    您可以使用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);
    });
    &lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-11
      • 2021-06-04
      • 1970-01-01
      • 2021-07-22
      相关资源
      最近更新 更多