是否可以按随机键顺序排列关联阵列/密钥对阵列。每当我添加一个新元素时,javascript 都会自动对键进行排序。
例如,
当我创建一个数组时
a[T1001] ="B"
a[T1005] = "A"
a[T1003] ="C"
后来验证了数组列表,我看到数组自动排序为:
a[T1001]
a[T1003]
a[T1005]
是否可以保留我将值分配给数组的相同顺序?我不能使用 Push 方法。它创建一个索引数组,其中添加了单个对象作为其值。
是否可以按随机键顺序排列关联阵列/密钥对阵列。每当我添加一个新元素时,javascript 都会自动对键进行排序。
例如,
当我创建一个数组时
a[T1001] ="B"
a[T1005] = "A"
a[T1003] ="C"
后来验证了数组列表,我看到数组自动排序为:
a[T1001]
a[T1003]
a[T1005]
是否可以保留我将值分配给数组的相同顺序?我不能使用 Push 方法。它创建一个索引数组,其中添加了单个对象作为其值。
JavaScript 中的对象(您的“数组”在这里只是一个对象)没有您可以依赖的属性的固有顺序。
作为一种解决方法,您可以将键的顺序存储在单独的数组中:
var order = [];
a['T1001'] = "B";
order.push( 'T1001' );
a['T1005'] = "A";
order.push( 'T1005' );
a['T1003'] = "C";
order.push( 'T1003' );
如果您然后遍历订单数组,您可以获得所需的订单:
for( var i=0; i<order.length; i++ ) {
console.log( a[ order[i] ] );
}
编辑
从第一个列表中删除元素需要使用indexOf
and splice()
:
function delElement( arr, order, index ) {
// get the position of the element within the order
var position = order.indexOf( key );
// delete element from list
delete arr[ order[ pos ] ];
// remove from ordering array
order.splice( pos, 1 );
}
在我看来,好像您在使用一个对象。永远无法保证对象属性的排序。我不认为 Internet Explorer(至少是旧版本)对属性进行排序,但 chrome 默认情况下会这样做。
您的代码无效,如果它们不是数字,它应该具有字符串形式的属性。你必须使用一个对象
a = {};
a["T1001"] ="B"
a["T1005"] = "A"
a["T1003"] ="C"
如果要保留顺序,可以使用两个数组来存储属性和值,或者如果坚持使用对象,则不能保证顺序。
两个数组
a1 = []; a2 = []
a1[0] = "T1001"; a2[0] = "B";
a1[1] = "T1005"; a2[1] = "A";
a1[2] = "T1003"; a2[2] = "C";
编辑:除非我猜到你的意思是错误的,并且 T1001 等是包含数字的变量。