javascript - 递归返回对象数组和嵌套对象键
问题描述
我目前正在学习递归,并且已经从数字、字符串和数组转向在对象上使用它......我正在尝试找出将对象作为参数并收集对象键的最佳方法并将所有嵌套对象放入一个数组中
我可以不使用递归返回单个对象的对象键。所以我试图将一个变量创建为一个空数组,然后使用 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));
推荐阅读
- django - Django 保持签名两周或直到浏览器关闭
- reactjs - 如何在 React JS 中更改错误警报的位置
- here-api - 为什么使用公共交通的 HERE Routing API 中的参数 TransitRadius 不会更改响应
- python - 在models.py中添加外键时遇到错误
- python - 我怎样才能为每个组合总结一个熊猫数据框?
- r - 分隔r中的两个单词
- reactjs - 组件中的 Redux mapStateToProps 状态
- bash - 是否可以在 shell GitLab 运行器中运行 Docker 容器?
- java - 如何在 Spring Boot 应用程序中将枚举字段转换为字符串保存到 mysql varchar 列
- javascript - 创建浏览器构建时模块的元数据版本不匹配