Javascript 递归函数如何在函数中保存值

Javascript 递归函数如何在函数中保存值,javascript,Javascript,我有一个函数,它在产品类别数组上循环,其中每个类别都可能有子类别数组,其中包含子类别,每个子类别也可能有子类别到n级 我有categories数组和categories\u id,我想搜索我的函数 findCategory( categories, category_id) { let category; for( let i = 0; i < categories.length; i++ ) { if( categories[ i ].id === ca

我有一个函数,它在产品
类别
数组上循环,其中每个类别都可能有
子类别
数组,其中包含
子类别
,每个子类别也可能有子类别到n级

我有
categories
数组和
categories\u id
,我想搜索我的函数

  findCategory( categories, category_id) {
    let category;
    for( let i = 0; i < categories.length; i++ ) {

      if( categories[ i ].id === category_id ) {
        category  = categories[ i ];
        break;
      }

      if( !category && categories[ i ].children ) {
        this.findCategory( categories[ i ].children, category_id )
      }
    }
    return category
  }
findCategory(类别、类别\u id){
let类;
for(设i=0;i

它总是返回null,即使它找到了类别。我所做的是错误的?

您还需要在循环中返回找到的结果

您可以为类别添加一个默认数组,这对于未指定的子级很重要

function findCategory(categories = [], category_id) {
    let category;
    for (let i = 0; i < categories.length; i++) {
        if (categories[i].id === category_id) {
            return categories[i];
        }
        if (category = this.findCategory(categories[i].children, category_id)) {
            return category;
        }
    }
}
函数查找类别(类别=[],类别id){
let类;
for(设i=0;i