Javascript 在数组对象中查找项数的递归方法
以下对象中获取titi数量的递归方法是什么:Javascript 在数组对象中查找项数的递归方法,javascript,recursion,Javascript,Recursion,以下对象中获取titi数量的递归方法是什么: { titi: "h0", history: [{ titi: "h1", history: [{ titi: "h11" }, { titi: "h12" }] }, { titi: "h12", history: [{ titi: "h121"
{
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问题中没有的密钥吗?还有,我可以知道为什么这被否决了吗?因为据我所知,它是有效的。好吧,显然不是。