javascript - 关联数组/ key 对数组在 Javascript 中以随机的 key 顺序排列。

标签 javascript arrays key-value

是否可以将关联数组/ key 对数组按随机的 key 顺序排列。每当我添加一个新元素时,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] ] );
}

编辑

从第一个列表中删除元素需要使用 indexOfsplice() :

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 );
}

关于javascript - 关联数组/ key 对数组在 Javascript 中以随机的 key 顺序排列。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17444480/

相关文章:

javascript - 如何从 <form> 创建变量的字典

javascript - 从 JQM 对话框修改页面

javascript - 禁止在整个元素 HTML 页面中拖动图像

javascript - 这个数组过滤器中的函数是如何工作的?

ruby - 通过 ruby​​ 中的值属性选择哈希值

javascript - 在 Three.js 场景中选择和修改 Material

c# - Dictionary Keys 有字数限制吗?

javascript - 如何在 Wordpress 的 functions.php 中编写 Javascript 函数?

c - 如何在 C 中的结构数组中查找元素?

performance - 将任意键/值对与 Postgres 数据库中的表行相关联的最佳性能方法?