javascript - 如何迭代嵌套对象并返回属性为“某物”的所有值
问题描述
我想知道从具有某些特定属性的嵌套对象返回值数组的最简单方法。给定的对象在整个地方都有许多具有相同名称的属性,请记住我的对象非常大,并且没有模式可以重复该属性..
例如:
var object = {
car : { price : "100" },
lot : { bike : { one : { price : "4" }, two { price : "16" } } }
bread : { crust : { price : "2" } }
}
findAllValues( object, "price" ) // returns array ["100", "4", "16", "2"]
我尝试使用一些库,如 lodash,但似乎无法正确使用。任何回应将不胜感激!
解决方案
您可以使用递归函数来递归您的对象并返回一个数组。
您可以使用以下功能;您所要做的就是传递一个对象和要匹配的属性。
const object = {
car : { price : "100" },
lot : { bike : { one : { price : "4" }, two : { price : "16" } } },
bread : { crust : { price : "2" } }
}
const findAllValues = (obj, match) => {
const res = []
const recurse = (obj) => {
for (const key in obj) {
const value = obj[key]
if (value !== undefined) {
if (value && typeof value === 'object') {
recurse(value, key)
} else {
if (key === match) {
res.push(value)
}
}
}
}
}
recurse(obj)
return res
}
console.log(findAllValues(object, "price"))
推荐阅读
- python - Django:使用两种不同模型创建用户帐户
- java - 定义缓存时如何从自定义类中获取 QueryFields?
- python - 需要使用python在outlook中切换帐户以使用其他帐户发送电子邮件
- haskell - 如果它们在同一个目录中,是否不能从另一个模块导入模块?(哈斯克尔)
- python - 如何使用python 3从“a”中的href获取带有类名的链接
- android - 在通话记录中存储带有自定义标签的电话号码,然后使用我的应用程序调用它
- javascript - 如何将 html2pdf 库的输出存储到变量中?
- android - 慢模拟器,没有常见的建议工作
- python - Celery 异步任务中的 Django 更新设置
- reactjs - 路由不是在构建 React js Web 应用程序之后