繁体   English   中英

在javascript / typescript中的对象内搜索数组

[英]search array within a object in javascript / typescript

我想在 Javascript 中的对象中找到第一个数组。 但是我的函数导致错误:

el 未定义

el 包含如下所示的对象:

data = {
   foo: {
      bar: [{object a},
            {object b},
            {object c}
           ]
   }
}


let el = data;
el = this.searchArray(el);
el.forEach(element => {
      console.log(element); 
      let siblingData = this.injectFilterParameters(element);
                        
        });
//here is unimportant code
searchArray(obj) {
    if (Array.isArray(obj)) {
        return obj;
    } else {
        Object.keys(obj).forEach(key => {
            if (Array.isArray(obj[key])) {
                return obj[key];
            } else {
                return this.searchArray(obj[key]);
            }
        })
    }
}
const data = {
  foo: {
    bar: [
      { object: 'a' },
      { object: 'b' },
      { object: 'c' }
    ]
  }
}

console.log(findArray(data))

function findArray(data: unknown): unknown[] | undefined {
  if (Array.isArray(data)) {
    return data
  }

  if (typeof data !== 'object') {
    return undefined
  }

  const object = data as Record<string, unknown>

  for (const key of Object.keys(object)) {
    const value = object[key]
    const valueSearchResult = findArray(value)

    if (valueSearchResult != undefined) {
      return valueSearchResult
    }
  }

  return undefined
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM