2017-12-02 17 views
0
var food = ["fruit=apple", "fruit=banana", "drink=cola"]; 
var vars = []; 
for(var i = 0; i < food.length; i++) 
{ 
    var key = food[i].substring(0, food[i].indexOf("=")); 
    if (vars[key] == undefined){ 
     vars[key] = []; 
    } 
    vars[key].push(food[i].toLowerCase().split("=")[1]); 
} 
console.log(vars); 
console.log(vars.length); 

從上面的代碼將輸出這個輸出。但問題是,長度:0.我不明白這是甚至可能的,因爲你可以清楚地看到包含[fruit:Array(2),drink:Array(1)]的數組。但它仍然說長度:0;含陣列但長度Javascript數組是0

The output of vars and vars.length

我想通過增值經銷商陣列一個循環迴路,但我不能,因爲我不能使用vars.length在我的for循環。

或者也許有其他的方式來循環變量anny建議是值得歡迎的。

+0

長度應該是多少? 2,由於密鑰的數量,3,因爲物品的總數量還是別的? – Andy

+0

是的,它需要是2.我還需要關鍵字是索引,所以如果說食物[水果]。長度我想看看食物數組內的水果數組中有多少物品。 – ruben450

+1

對,只需使用一個對象'{}',並使用@ hsz的解決方案來獲得長度。 – Andy

回答

2

您正在使用您的vars數組作爲對象。數組不具有文字鍵。通過您的方法,您可以使用以下數值計算您的值:

Object.values(vars).length