2012-05-09 8 views
0

Я получаю пару случайных ключей, могу ли я назначить его массиву?Назначение неупорядоченных ключей массиву Js

Его проблематичной здесь, когда я назначить его как arr[50] = 'abc' он автоматически создает ключи ДО 50 как arr[0], arr[1], arr[2] и так далее.

и я хотел массив как этот arr[50=>'abc','40'=>'pqr','53'=>'lmn']

Я его здесь

if(typeof(feedArr.latestRating) == 'object'){ 
        jQuery.each(feedArr.latestRating,function(key,val){alert('key::'+key); 
        if(key in newRatingArr){ 
        //delete the key if already exists 
         newRatingArr.splice(key,1); 

        }else{ 
         //insert the key,value 
         newRatingArr[key] = val; //here is the problem occurs when key is 50 it automatically creates the indexes in the array upto 50 which i dont want 
         // alert('Key between::'+key); 
         // alert('Value between::'+newRatingArr[key]); 
         //newRatingArr.splice(key,0,val); 
        } 
        //alert(key); 
        emptyRate = 0; 

        }); 
       }else{ 
        emptyRate = 1; 
       } 

Что я могу здесь делать? Пожалуйста, дайте мне знать.

ответ

5

Используйте объект {} вместо массива [].

Объекты могут действовать как неупорядоченные контейнеры с ключом, что вам, кажется, нужно здесь.

// somewhere... 
var newRatingArr = {}; 

// your code. 
var emptyRate = true; 
if (typeof (feedArr.latestRating) == 'object') { 
    jQuery.each(feedArr.latestRating, function (key, val) { 
     newRatingArr[key] = val; 
     emptyRate = false; 
    }); 
} 
+0

Будут ли другие функции, такие как SPLICE, и все работать с объектом? AKX? –

+0

мои другие функции массива, такие как concat и shuffle, используются меньше, если я использую объекты здесь AKX –

+0

Но если у вас нет массивных, смежных данных, тогда вы не должны вставлять его в массив ... – AKX

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