js数组中的字符串索引

pal*_*laa 3 javascript arrays indexing

我想把一个特定的字符串除了一个数字到数组的索引,

我是这样做的

 var array= new Array();
 $(document).ready(function(){
  array= addToArray();
  console.log( "array size " + array.length);
 });

function addToArray(){
    var i = 0;
    var tmpArray = new Array();
    while(i<10){
       if(i>9){
          addToArray();
          i++;
    }
    else{
        tmpArray ["elem"+i] = "i";
        console.log(tmpArray ["elem"+i]); //it prints out !!!
        i++;
    }
 }
 console.debug(tmpArray );

  return tmpArray ;

}
Run Code Online (Sandbox Code Playgroud)

当我打印出tmpArray时它也是空的,大小也是0,当我从数组索引中删除"elem"时它能正常工作,我该怎么办?这是一个真实的例子http://jsfiddle.net/dfg3x/

Mic*_*ski 8

JavaScript没有像PHP和其他一些语言那样的字符串数组键.您所做的是添加一个名为elem + itmpArray对象的属性.它不会影响数组的.length属性,即使属性存在且可访问,并且无法通过数组方法访问它.pop(), .shift()

也许您应该声明tmpArray为对象文字,因为您似乎没有使用任何数字键.

function addToArray() {
    var i = 0;
    // Make an object literal
    var tmpObj = {};
    while(i<10) {
       if(i>9) {
          addToArray();
          i++;
       }
       else {
          tmpObj["elem"+i] = "i";
          console.log(tmpObj["elem"+i]); //it prints out !!!
          i++;
       }
    }
    console.debug(tmpObj );

    return tmpObj ;
}
Run Code Online (Sandbox Code Playgroud)