2012-04-26 2 views
3

Я хочу поставить определенную строку в дополнение к ряду к индексу массива,индекс строки в JS массива

я делаю как этот

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 ; 

} 

, когда я распечатать tmpArray пусто также размер равен 0, когда я удаляю «elem» из индекса массива, он работает правильно, что мне делать? вот реальный пример http://jsfiddle.net/dfg3x/

ответ

8

JavaScript не имеет ключей массива строк, таких как PHP & некоторые другие языки. Что вы сделали, так это добавить свойство с именем elem + i в объект tmpArray. Это не влияет .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 ; 
} 
+0

Yeees, недвижимость есть! Спасибо – palAlaa

Смежные вопросы