javascript - 递归返回对象数组和嵌套对象键

标签 javascript object recursion

我目前正在学习递归,并已从数字、字符串和数组转向在对象上使用它......我正在尝试找出将对象作为参数并收集键的最佳方法将对象和所有嵌套对象放入数组中

我可以不使用递归返回单个对象的对象键。所以我试图创建一个变量作为空数组,然后使用 for 循环迭代该对象,如果“i”是一个对象,则将对象键插入数组变量并返回它。不幸的是,这不会起作用。

我想要以下内容:

{lamp: 2, candle: 2, pillow: {big: 2, small: 4}, bathroom: {toilet: 1, shower: {shampoo: 1, conditioner: 2}}}

返回:

[lamp, candle, pillow, big, small, bathroom, toilet, shower, shampoo, conditioner]

希望这足以解释,如果没有,请告诉我:)

我尝试了以下方法:

function(obj) {
let keysArray = [];
for (let i = 0, i < obj.length, i++)
if (obj[i] === typeOf object) {
keysArray.push(obj[i].keys);
}
return keysArray
}

最佳答案

您可以编写如下递归函数

let obj = {lamp: 2, candle: 2, pillow: {big: 2, small: 4}, bathroom: {toilet: 1, shower: {shampoo: 1, conditioner: 2}}};

function getKeys(o) {
  let result = [];
  for (let key in o) {
    result.push(key);
    if(o[key] && typeof o[key] === "object") result.push(...getKeys(o[key]));
  }
  return result;
}

console.log(getKeys(obj));

关于javascript - 递归返回对象数组和嵌套对象键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56449276/

相关文章:

javascript - 将 js 从 svg 文件中分离出来时出现问题

javascript - page.evaluate 返回空值但浏览器控制台返回正确值

javascript在函数中声明键值对

javascript - 递归对象 - Javascript

c - 为什么我的递归函数的返回值出错

javascript - 离李最近的图片

javascript - 为什么需要使用 Object.create()

java - 如何创建通用子类的实例?出现错误 : "Bound mismatch: The type ... is not a valid substitute for the bounded parameter ..."

javascript - 使用具有递归函数的 promise

javascript - 如何在 react 中通过 Prop 导入图像并使用 'import' 路径