我想在Javascript中创建一个关联数组,其中我将有一堆指向Image对象的字符串键.原因是我想要预先加载并动态控制大量图像,而不会用数百个全局变量污染全局空间.例如,要避免以下情况:
var img1, img2, img3, ... , img99;
img1 = img2 = img3 = ... = img99 = new Image();
Run Code Online (Sandbox Code Playgroud)
相反,我只想通过一些可识别的字符串名称来调用图像,以使代码更易于阅读,并且_images在全局空间中只有一个变量.
起初,我试图使用an Array来执行此任务,但却发现没有用于指定Array带字符串键的实例化的语法.进一步的调查使我在这里,甚至可以说,Array用作关联阵列可能是有害的.
以前,我曾假定的Javascript阵列类似于LUA表,其中有一个索引部分(其大小被保持在length属性)和散列部分(字符串索引).显然,事实并非如此.相反,在指定"字符串键"时,它实际上只是指定对象属性的简写.
因此,我终于走上了这条道路:
var _images = {
"button_mouseover": new Image(),
"button_mouseout": new Image(),
"button_mousedown": new Image(),
"button_mouseup": new Image()
}
Run Code Online (Sandbox Code Playgroud)
其中我创建了一个对象(其引用存储在其中_images),其中包含一系列属性,每个属性都存储对实例化Image对象的引用.
现在填充src所有图像的属性,至少可以说是相当冗长:
_images["button_mouseover"].src = "fsfs.gif";
_images["button_mouseout"].src = "gsgs.gif";
_images["button_mousedown"].src …Run Code Online (Sandbox Code Playgroud) 在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 abject的真实顺序,但我从这段代码得到错误的答案:
var Obj={"x":"z", "2":"a", "1":"b"};
for(i in Obj)
document.write(Obj[i]+"<br>");
Run Code Online (Sandbox Code Playgroud)
我希望看到z,a,b的答案,但我得到b,a,z
见行动代码:
http://jsfiddle.net/gpP7m/
我在JavaScript中有一个字典样式的数组对象,如下所示,并希望按属性对其进行排序.怎么做?我知道类似的问题已得到解答,但我认为我的结构不同.简单地运行array.sort(compare)对我不起作用,因为我没有索引的整数.谢谢!
var myData = {
"userOne": {
"firstName": "Felix",
},
"userTwo": {
"firstName": "Bob",
},
"userThree": {
"firstName": "Anna",
}
}
Run Code Online (Sandbox Code Playgroud)
我想对上面的数组myData进行排序,firstName以便Anna首先出现对象,然后是Bob,然后是Felix.非常感谢!!