如何基于指定Key用ES6单行代码获取JavaScript嵌套对象对应值
实现方案
最简实现(保留原对象所有属性)
JavaScript 对象本身支持按键直接索引,不需要任何循环,单行代码即可实现:
const target = data[connector.source];
匹配预期输出(排除冗余的数字键属性)
如果需要和你给出的预期输出完全一致,去掉嵌套的"2"属性,可以用ES6解构+立即执行函数实现,无循环单行写法:
const target = (({ id, name, data }) => ({ id, name, data }))(data[connector.source]);
原理说明
- 先通过
data[connector.source]拿到对应键的完整对象 - 用参数解构只提取需要的
id、name、data三个属性 - 直接返回由这三个属性组成的新对象,无冗余内容
通用场景实现(自动排除所有数字键属性)
如果后续会新增更多数字键的嵌套对象,不想手动罗列要提取的字段,可以用Object.fromEntries+filter的单行实现:
const target = Object.fromEntries(Object.entries(data[connector.source]).filter(([key]) => isNaN(Number(key))));
这个写法会自动过滤掉所有键为数字的属性,只保留非数字键的字段,适用性更广。
内容的提问来源于stack exchange,提问作者BATMAN_2008
相关产品推荐
相关产品推荐

