相关疑难解决方法(0)

元素在"for(... in ...)"循环中排序

Javascript中的"for ... in"循环是否按照声明的顺序循环遍历hashtables/elements?是否有一个浏览器没有按顺序执行?
我想要使​​用的对象将被声明一次,永远不会被修改.

假设我有:

var myObject = { A: "Hello", B: "World" };
Run Code Online (Sandbox Code Playgroud)

我进一步使用它们:

for (var item in myObject) alert(item + " : " + myObject[item]);
Run Code Online (Sandbox Code Playgroud)

在大多数体面的浏览器中,我可以期待'A:'你好''总是先来'B:'世界"吗?

javascript for-loop

196
推荐指数
5
解决办法
9万
查看次数

按排序顺序迭代Javascript关联数组

假设我有一个Javascript关联数组(又名哈希,又名字典):

var a = new Array();
a['b'] = 1;
a['z'] = 1;
a['a'] = 1;
Run Code Online (Sandbox Code Playgroud)

如何按排序顺序迭代键?如果它有助于简化事情,我甚至不需要这些值(它们都只是数字1).

javascript

107
推荐指数
4
解决办法
15万
查看次数

JavaScript:排序集合,不是数组

我在JavaScript中有一组对象,如下所示:


Object collection = new Object();
collection[123] = new Item(); //another object
collection[425] = new Item();
collection[2134] = new Item();
//etc. etc.

//TODO: sort items

Run Code Online (Sandbox Code Playgroud)

我想根据集合中Item对象的属性对此集合进行排序.JS Array中有很好的内置排序功能,所以我的第一个想法是随后修改代码:


Object collection = new Array();
collection[123] = new Item(); //another object
collection[425] = new Item();
collection[2134] = new Item();
//etc. etc.

collection.sort(comparisonFunction); //where comparisonfunction handles the sorting logic
Run Code Online (Sandbox Code Playgroud)

现在集合很好地排序 - 但是,我无法使用属性访问项目,我曾经用它来设置它们,即


collection[2134]
Run Code Online (Sandbox Code Playgroud)

是null,因为JS数组不包含那么多元素(即使它会,它的结果也不会如预期的那样)

我需要的是

  • 能够直接使用我设置的数字属性访问集合中的元素(当不使用JS数组时已经是给定的)
  • 能够对集合中的项目进行排序

编辑:对象不需要像数组一样运行,也不是自然数组.我需要的是非常接近Java TreeMap - 一个集合,它维护一个特定的顺序,也是一个地图.或者以另一种方式解释,我需要一个普通的旧JavaScript对象(有些人称之为"关联数组"),其包含的用户创建的元素可以被排序.

编辑2:我最终使用的解决方案是Anatoliy,稍加修改.基本上我创建了一个数组,我在其中复制"集合"并映射两个对象(数组和集合)以获得两者的好处.还要感谢Roatin Marth指出迭代对象不能保证以任何顺序发生(我在修改Anatoliy的解决方案时考虑过这一点).

javascript arrays sorting object

1
推荐指数
1
解决办法
4858
查看次数

这个Javascript数组的正确排序是什么?

在Firefox中,输出按字母顺序排序(这是它们声明的顺序).在IE和Chrome中它们是数字的.所有最新版本.

哪个是对的?

<html>
<head></head>
<body>
<script type="text/javascript">
function makeArray()
{
    var array = [{5:'Five',4:'Four',1:'One',3:'Three',2:'Two'}];
    var msg = '';

    for (var val in array[0])
    {
        msg = msg + val;
    }   
    alert(msg);
}
</script>
<input type="button" onClick="makeArray();" value="Press Me" />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Back Story ...在SpiraTeam(我们当前的错误跟踪系统)中,许多列表(用户,模块等)使用与上述类似的格式进行排序.除非你使用FireFox,否则这会使查找内容变得非常困难和烦人.我的兴趣纯粹是学术性的,我只是问,因为我想知道哪个浏览器是正确的.

javascript

1
推荐指数
1
解决办法
104
查看次数

标签 统计

javascript ×4

arrays ×1

for-loop ×1

object ×1

sorting ×1