Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在数组对象中查找项数的递归方法_Javascript_Recursion - Fatal编程技术网

Javascript 在数组对象中查找项数的递归方法

Javascript 在数组对象中查找项数的递归方法,javascript,recursion,Javascript,Recursion,以下对象中获取titi数量的递归方法是什么: { titi: "h0", history: [{ titi: "h1", history: [{ titi: "h11" }, { titi: "h12" }] }, { titi: "h12", history: [{ titi: "h121"

以下对象中获取titi数量的递归方法是什么:

{
    titi: "h0",
    history: [{
        titi: "h1",
        history: [{
            titi: "h11"
        }, {
            titi: "h12"
        }]
    }, {
        titi: "h12",
        history: [{
            titi: "h121"
        }, {
            titi: "h122"
        }]
    }]
}
预期的结果就是总数。在本例中:7.

var数据={
提提:“h0”,
历史:[{
提提:“h1”,
历史:[{
提提:“h11”
}, {
提提:“h12”
}]
}, {
提提:“h12”,
历史:[{
提提:“h121”
}, {
提提:“h122”
}]
}]
}
var numberOfTiti=0;
功能过程(obj){
对于(obj中的var指数){
如果(索引=='titi'){
numberOfTiti++;
}
如果(对象的类型[索引]=“对象”){
过程(obj[索引]);
}
}
}
过程(数据);

控制台日志(numberOfTiti)一种有趣、简单且无限递归的方法:

让obj={
提提:“h0”,
历史:[{
提提:“h1”,
历史:[{
提提:“h11”
}, {
提提:“h12”
}]
}, {
提提:“h12”,
历史:[{
提提:“h121”
}, {
提提:“h122”
}]
}]
}
让count=JSON.stringify(obj).match(/“titi”:/g).length
console.log(计数)//7
var json={titi:“h0”,历史:[{titi:“h1”,历史:[{titi:“h11”},{titi:“h12”},{titi:“h12”,历史:[{titi:“h121”},{titi:“h122”}]}
var计数=0;
函数getCount(干草堆、针){
for(干草堆中的var k){
if(haystack.hasOwnProperty(k)){
如果(k==针){count=count+1};
if(haystack[k]==“object”)getCount(haystack[k],针);
}
}
}
getCount(json,'titi');

console.log('count:',count)
使用
JSON.stringify

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

我建议你先写下你认为获得准确计数所需的步骤。在每一步之前的先决条件是什么?在每一步中,您希望得到什么样的输入。然后写下每个步骤的结果和输出。您可以先迭代开始,看看是否完全理解问题。然后尝试递归方法。确保你有一个退出条款。。。行动?你对你的问题有评论和答案…@Jeremy:我没有回答我的答案?!什么?不,只是在相当长的一段时间里,对你的问题有评论和答案,我还以为你已经走了:)@scrasedcola:我的观点是,这是一个非常基本的算法,只要看看json结构就可以理解。我不能让我的头脑反复思考。我无法理解人们对某个问题投反对票,因为他们没有回答。@torazaburo我可以知道你为什么修改我的答案并添加了OP问题中没有的密钥吗?还有,我可以知道为什么这被否决了吗?因为据我所知,它是有效的。好吧,显然不是。