2017-12-02 1 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;배열을 포함하지만 길이가 0 인 자바 스크립트 배열은

The output of vars and vars.length

나는 for 루프와 바르 배열을 반복하고 싶지,하지만 난 루프 내에서 vars.length를 사용할 수 없습니다 때문입니다.

또는 다른 방법으로 vars를 반복 할 수 있습니다. anny 제안을 환영합니다.

+0

길이는 얼마입니까? 2, 열쇠의 숫자 때문에, 3, 항목의 총 수 때문에, 또는 다른 뭔가? – Andy

+0

예 2가되어야합니다. 나는 또한 지수가 키워드가 필요합니다. food [fruit] .length라고 말하면 음식 배열 안에있는 과일 배열에 얼마나 많은 항목이 있는지보고 싶습니다. – ruben450

+1

맞아, 그냥 객체'{}'를 사용하고 @ hsz의 해결책을 사용하여 길이를 얻으십시오. – Andy

답변

2

vars 어레이를 개체로 사용하고 있습니다. 배열에는 리터럴 키가 없습니다. 접근 방식을 사용하면 다음을 사용하여 값을 계산할 수 있습니다.

Object.values(vars).length 
관련 문제