2017-12-02 18 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であることです。私は、果実:Array(2)、drink:Array(1)を含む配列をはっきりと見ることができるので、それがどのように可能であるかわかりません。しかし、それでも長さは0と言います。配列を含むJavaScript配列の長さは0です。

The output of vars and vars.length

私はのためのループを備えたVARS配列をループにしたいが、私は、私はループのための私にvars.lengthを使用することはできませんすることはできませんので。

おそらく、varsをループする別の方法があります。アニミーの提案は大歓迎です。

+0

長さはどのくらいですか? 2、キーの数のために、3、アイテムの総数のため、または何か他の? – Andy

+0

はいそれは2である必要があります。私はまた、キーワードであることをインデックスとする必要があります。もし、food [fruit] .lengthと言えば、食品アレイの内部にある果物アレイにいくつのアイテムがあるかを見たいと思います。 – ruben450

+1

右、オブジェクト '{}'を使用して、@ hszの解を使って長さを取得してください。 – Andy

答えて

2

varsアレイをオブジェクトとして使用しています。配列にはリテラルキーはありません。あなたのアプローチでは、次のように値を数えます:

Object.values(vars).length 
関連する問題