2015-04-24 124 views
0

我有以下對象:添加對象到一個數組

{ 
    "EekvB3cnwEzE":{ 
    "name":"hi", 
    }, 
    "Brv1R4C6bZnD":{ 
    "name":"yup", 
    }, 
    "kRwRXju6ALJZ":{ 
    "name":"okay", 
    } 
} 

我想每個項目添加到一個數組。我做了下面的代碼,但由於某種原因,我回來[]在我的console.log

任何人都可以幫我找出什麼是錯?

$scope.items = []; 

$http.get("/url").success(function(data) { 
    $.each(data, function(key, value) { $scope.items[key] = value; }); 
    console.log($scope.items); 
}); 

回答

4

當您記錄數組時,名稱鍵將被忽略。

如果你想讓他們出現在那裏,你需要用號碼取代key(在此位的代碼$scope.items[key])或使用.push(value)而不是分配。

+0

我想有我數組索引仍是「重頭戲」,因爲我希望能夠通過按鍵來尋找他們。有沒有辦法在JavaScript中做到這一點? – bryan

+3

@bryan具有命名索引的「數組」是一個對象,您首先已經擁有這個對象。 – JJJ

+3

@bryan - 數組的要點是有一個有序的事物列表。該訂單由屬性名稱(數字)來描述。如果你想要命名的鍵,使用一個普通的對象(比如你似乎正在複製值的東西)而不是數組。 – Quentin

0

你的ajax調用肯定有問題。由於以下工作:

var x = []; 
$.each({ 
    "EekvB3cnwEzE":{ 
    "name":"hi", 
    }, 
    "Brv1R4C6bZnD":{ 
    "name":"yup", 
    }, 
    "kRwRXju6ALJZ":{ 
    "name":"okay", 
    } 
}, function(key, value){ 
    x[key] = value; 
}); 
console.log(x); 

它將記錄:

[EekvB3cnwEzE: Object, Brv1R4C6bZnD: Object, kRwRXju6ALJZ: Object] 
+0

當我做'console.log(key,value);'我找回JSON中的每一項。所以我不認爲我的ajax調用有什麼問題。 – bryan