2017-06-08 7 views
-3

のオブジェクト内の項目数を見つけるために:再帰的な方法は、以下の目的でティティの数を取得するには、再帰的な方法は何ですか配列

{ 
    titi: "h0", 
    history: [{ 
     titi: "h1", 
     history: [{ 
      titi: "h11" 
     }, { 
      titi: "h12" 
     }] 
    }, { 
     titi: "h12", 
     history: [{ 
      titi: "h121" 
     }, { 
      titi: "h122" 
     }] 
    }] 
} 

期待される結果が合計です。この例では:7

+0

私はあなたが正確なカウントを取得する必要があると思うの手順を書き込むことによって開始を示唆しています。各ステップ前の前提条件と、各ステップでどのようなインプットを期待しているか。次に、各ステップの結果と出力を書き出します。最初に反復的に開始して、問題を完全に理解しているかどうかを確認できます。その後、再帰的な方法を試してください。 exit節があることを確認してください。 – scrappedcola

+0

これまでに何を試しましたか? –

+0

Uuuhhh ... OP?あなたはあなたの質問に対するコメントと答えを持っています... –

答えて

1

var data = { 
 
    titi: "h0", 
 
    history: [{ 
 
    titi: "h1", 
 
    history: [{ 
 
     titi: "h11" 
 
    }, { 
 
     titi: "h12" 
 
    }] 
 
    }, { 
 
    titi: "h12", 
 
    history: [{ 
 
     titi: "h121" 
 
    }, { 
 
     titi: "h122" 
 
    }] 
 
    }] 
 
} 
 

 
var numberOfTiti = 0; 
 
function process (obj) { 
 
    for (var index in obj) { 
 
    if (index === 'titi') { 
 
     numberOfTiti++; 
 
    } 
 
    if (typeof obj[index] === 'object') { 
 
     process(obj[index]); 
 
    } 
 
    } 
 
} 
 

 
process(data); 
 
console.log(numberOfTiti);

-1

、面白い簡単に、そして無限に再帰的な方法は、これを実行します

let obj = { 
 
    titi: "h0", 
 
    history: [{ 
 
     titi: "h1", 
 
     history: [{ 
 
      titi: "h11" 
 
     }, { 
 
      titi: "h12" 
 
     }] 
 
    }, { 
 
     titi: "h12", 
 
     history: [{ 
 
      titi: "h121" 
 
     }, { 
 
      titi: "h122" 
 
     }] 
 
    }] 
 
} 
 

 
let count = JSON.stringify(obj).match(/"titi":/g).length 
 

 
console.log(count) // 7

+0

@torazaburoなぜ私の答えを変更し、OPの質問に含まれていないキーを追加したのか分かりますか?そして、なぜ、これが落とされたのか分かりますか?私が知る限り、それは機能します。 –

+0

さて、明らかにそうではありません。 –

1

var json = { titi:"h0", history : [{ titi :"h1", history : [{ titi :"h11"}, { titi : "h12"}] }, { titi : "h12", history : [{ titi :"h121"}, { titi : "h122"}]}]} 
 

 
var count = 0; 
 

 
function getCount(haystack, needle) { 
 
    for (var k in haystack) { 
 
     if (haystack.hasOwnProperty(k)) { 
 
      if (k == needle) {count = count + 1}; 
 
      if (typeof haystack[k] === 'object') getCount(haystack[k], needle); 
 
     } 
 
    } 
 
} 
 

 
getCount(json, 'titi'); 
 
console.log('count: ',count)

1

使用JSON.stringify

function countTiti(obj) { 
    let count = 0; 
    JSON.stringify(obj, (k, v) => { if (k === 'titi') count++; return v; }); 
    return count; 
} 
関連する問題