Javascript数组键值作为变量

Javascript数组键值作为变量,javascript,arrays,Javascript,Arrays,我正在尝试设置一个键数组,这些键是字符串而不是数字。但是,当我尝试这样做时,数组最终为空 这是一个有效的函数(其中键只是一个简单的数字“i”: 以下是我尝试使用的函数,但结果数组为空: function loadImages(arr, data, callBack){ var count = 0; var img = new Array(); for(var i in arr ){

我正在尝试设置一个键数组,这些键是字符串而不是数字。但是,当我尝试这样做时,数组最终为空

这是一个有效的函数(其中键只是一个简单的数字“i”:

以下是我尝试使用的函数,但结果数组为空:

function loadImages(arr, data, callBack){
                var count = 0;
                var img = new Array();

                for(var i in arr ){
                    var src = "\""+arr[i]+"\"";

                    img[src] = new Image();
                    img[src].src = arr[i];
                    img[src].onload = function(){
                        count++;
                        if(count == arr.length){
                            callBack(data, img);
                        }
                    }
                }
            } 
我也尝试过用以下方式定义“src”:

var src = arr[i];

var src = "'"+arr[i]+"'";

有人知道它为什么会导致null吗?

JAVASCRIPT

function loadImages(arr, data, callBack){
                var count = 0;
                var img = new Array();
                for(i=0; i<arr.lenght; i++ ){
                    var src = "\"" +arr[i]+ "\"";

                    img[src] = new Image();
                    img[src].src = arr[i];
                    img[src].onload = function(){
                        count++;
                        if(count == arr.length){
                            callBack(data, img);
                            alert(img);
                        }
                    }
                }
            }
函数加载映像(arr、数据、回调){
var计数=0;
var img=新数组();

对于(i=0;iJavascript数组不适合用于枚举数组。这就是您在这里尝试的操作。请改用Object

然后可以使用字符串作为键

function loadImages( arr, data, callBack )
{
  var nCount = 0 ;
  var oImg = new Object() ;

  for ( i = 0; i < arr.lenght; i++ )
  {
    var sSrc = "\"" +arr[ i ]+ "\"" ;

    oImg[ sSrc ] = new Image() ;
    oImg[ sSrc ].src = arr[ i ] ;
    oImg[ sSrc ].onload = function()
                          {
                            count++;
                            if ( count == arr.length )
                            {
                              callBack( data, oImg ) ;
                              alert( oImg ) ;
                            }
                          }
  }
}
函数加载映像(arr、数据、回调)
{
var-nCount=0;
var oImg=新对象();
对于(i=0;i
您需要一个对象
{}
。数组索引是数字的。当然!非常感谢elclanrs。一个非常简单的答案。
“\”“+arr[i]+“\”“
看起来非常错误。这将创建一个包含引号的字符串(
)。
function loadImages( arr, data, callBack )
{
  var nCount = 0 ;
  var oImg = new Object() ;

  for ( i = 0; i < arr.lenght; i++ )
  {
    var sSrc = "\"" +arr[ i ]+ "\"" ;

    oImg[ sSrc ] = new Image() ;
    oImg[ sSrc ].src = arr[ i ] ;
    oImg[ sSrc ].onload = function()
                          {
                            count++;
                            if ( count == arr.length )
                            {
                              callBack( data, oImg ) ;
                              alert( oImg ) ;
                            }
                          }
  }
}