【问题标题】:jQuery.each: reordering arrayjQuery.each:重新排序数组
【发布时间】:2011-07-16 00:28:15
【问题描述】:

我最近一直在摆弄数组和数组排序,偶然发现了一些奇怪的东西。

以这种情况为例:

arr = {};
arr[1] = "one";
arr[2] = "two";
arr[105] = "three";
arr[4] = "four";

$.each(arr, function (key, val) {
    $(body).html(key + " => " + val);
});

现在,我们应该希望得到以下结果:

1 => one
2 => two
105 => three
4 => four

对吗?不幸的是没有。我收到一个数字排序,导致索引105 成为序列中的最后一项。有人知道我如何克服这个问题吗?非常感谢您的指导,谢谢。

【问题讨论】:

  • 我得到了想要的结果
  • @Dr.Molle:虽然您的浏览器可能会给出想要的结果,但不能保证。顺序完全取决于执行。 ECMAScript 中没有具体要求。

标签: jquery each numeric css-position


【解决方案1】:

这不是一个数组。它是一个对象。因此,没有保证顺序。

为了保证某种序列,你可以在一个数组中定义序列,然后迭代这个数组,从对象中选择每个数组值的索引。

arr = {};
arr[1] = "one";
arr[2] = "two";
arr[105] = "three";
arr[4] = "four";

var order = [1,2,105,4];

$.each(order, function(i,val) {
    console.log( val + '=>' + arr[ val ] );
});

【讨论】:

    【解决方案2】:

    也许你可以试试这个:

    arr =
    [   ['1', 'one']
    ,   ['2', 'two']
    ,   ['105', 'three']
    ,   ['4', 'four']
    ];
    
    $.each(arr, function(key, values)
    {
        $(body).html(values[0] + " => " + values[1]);
    });
    

    【讨论】:

      猜你喜欢
      • 2011-01-27
      • 2012-08-11
      • 2015-02-13
      • 1970-01-01
      • 1970-01-01
      • 2012-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多