是否可以将随机数组/密钥对数组按随机顺序排列。每当我添加一个新元素时,javascript就会自动对键进行排序。
例如,
当我创建一个数组
时a[T1001] ="B"
a[T1005] = "A"
a[T1003] ="C"
后来验证了数组列表,我发现数组自动排序为:
a[T1001]
a[T1003]
a[T1005]
是否可以保留我为数组赋值的相同顺序?我不能使用Push方法..它创建一个索引数组,其中添加了各个对象作为其值。
答案 0 :(得分:3)
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
和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 );
}
答案 1 :(得分:0)
让我觉得你好像在使用一个物体。永远不能保证对象属性的排序。我不认为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等是包含数字的变量。