我最近一直在摆弄数组和数组排序,并偶然发现了一些奇怪的东西。
采取这种情况:
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
成为序列中的最后一项。有人知道如何克服这个问题吗?非常感谢您的指导,谢谢。
答案 0 :(得分:9)
那不是数组。这是一个对象。因此,没有保证订单。
为了保证某种序列,您可以在Array中定义序列,然后迭代该Array,从对象中选择每个数组值的索引。
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 ] );
});
答案 1 :(得分:0)
也许你可以试试这个:
arr =
[ ['1', 'one']
, ['2', 'two']
, ['105', 'three']
, ['4', 'four']
];
$.each(arr, function(key, values)
{
$(body).html(values[0] + " => " + values[1]);
});