javascript - 在 Object of objects JS 中搜索和查找(不在对象数组中)
问题描述
大家好,我正在搜索如何在一个大对象中搜索,所有结果都是一些只有孩子而不是孙子的小对象
我的问题是
let obj = {
child1: {
name: 'Nairi',
age: 19
},
child2: {
name: 'Zara',
age: 19
},
child3: {
name: 'Tyom',
age: 20
}
}
如果我正在寻找 Tyom 和 child1,我想获得整个孩子 3,如果我想要获得 Nairi,这样我就可以访问其他密钥,比如他们的年龄等......
解决方案
您可以使用Object.values()
从对象中获取所有值的数组,然后.find()
在这些值上使用以查找具有name
等于您的搜索属性的子对象:
let obj = { child1: { name: 'Nairi', age: 19 }, child2: { name: 'Zara', age: 19 }, child3: { name: 'Tyom', age: 20 } }
const search = "Tyom";
const res = Object.values(obj).find(child => child.name === search);
console.log(res);
但是,您的外部对象似乎更适合array,因为您似乎正在存储一个子列表,在这种情况下不需要Object.values()
并且可以使用来完成.find()
:
let children = [{ name: 'Nairi', age: 19 }, { name: 'Zara', age: 19 }, { name: 'Tyom', age: 20 }];
const search = "Tyom";
const res = children.find(child => child.name === search);
console.log(res);
推荐阅读
- postgresql - Cloud SQL:定期将数据导出到 CSV,避免重复
- sql - 对不包含重复项的列求和
- string - 我可以直接从拆分中获取字符串吗?
- python - 用矩阵中的不同值替换 x,y 点
- mysql - 为什么我不能在这里按日期(开始时间)分组?
- tsql - 使用连接 T-SQL 从其他多个表创建表
- node.js - 为什么sequelize默认添加时间戳列(createdAt和updatedAt)?
- pandas - 为什么设置WithCopyWarning?
- c# - DataTrigger 到控件的 Validation.HasError
- bash - shell 脚本将行拆分为多行