从嵌套的 JavaScript 对象中检索属性的最有效方法是什么?
What is the most efficient way to retrieve properties from a nested JavaScript object?
我使用了一个包含嵌套数据的 API。数据以小页面发送(一次<10 JSON 个对象)并且检索到的信息仅在该页面上使用,它不会在会话中持续存在。我已经尝试使用 Immutable JS 和 Native JS 来存储 JSON。我使用不可变的问题是,要将信息呈现到模板中,它将经历一系列像这样的类型转换。
JSON -> JS -> ImmutableMap -> JS
所以我更喜欢使用原生JS。缺点是不可变的 JS 的 API 使用 getIn() 获取地图中的字段非常方便。对于本机 JS,我使用方括号访问嵌套对象字段。
const A = { B : { C: D }};
const d = A['B']['C'];
这可能非常冗长。我不确定不可变 JS 是否能为我的用例提供更好的性能。它不是一个大的对象映射,我假设从 JS 转换回 JS 不可变会产生一些开销。但是,我也不确定使用方括号访问嵌套对象属性的防御性如何。
用点访问
您可以按以下方式访问您的数据:
const A = { B : { C: 'D' }};
const d = A.B.C;
doesn't seem 使用方括号访问 属性 或使用点运算符之间有很大区别。
解构
您也可以通过解构实现完全相同的效果:
const A = { B : { C: 'D' }};
const { B: { C: d }} = A;
处理未定义
为了避免undefined,你可以在解构中使用默认值:
const getD = ({B : { C :d } = {}} = {}) => console.log(d)
getD(undefined);// -> undefined
或
const { B: { C : d } = {} } = {}
console.log(d); // -> undefined
我使用了一个包含嵌套数据的 API。数据以小页面发送(一次<10 JSON 个对象)并且检索到的信息仅在该页面上使用,它不会在会话中持续存在。我已经尝试使用 Immutable JS 和 Native JS 来存储 JSON。我使用不可变的问题是,要将信息呈现到模板中,它将经历一系列像这样的类型转换。
JSON -> JS -> ImmutableMap -> JS
所以我更喜欢使用原生JS。缺点是不可变的 JS 的 API 使用 getIn() 获取地图中的字段非常方便。对于本机 JS,我使用方括号访问嵌套对象字段。
const A = { B : { C: D }};
const d = A['B']['C'];
这可能非常冗长。我不确定不可变 JS 是否能为我的用例提供更好的性能。它不是一个大的对象映射,我假设从 JS 转换回 JS 不可变会产生一些开销。但是,我也不确定使用方括号访问嵌套对象属性的防御性如何。
用点访问
您可以按以下方式访问您的数据:
const A = { B : { C: 'D' }};
const d = A.B.C;
doesn't seem 使用方括号访问 属性 或使用点运算符之间有很大区别。
解构
您也可以通过解构实现完全相同的效果:
const A = { B : { C: 'D' }};
const { B: { C: d }} = A;
处理未定义
为了避免undefined,你可以在解构中使用默认值:
const getD = ({B : { C :d } = {}} = {}) => console.log(d)
getD(undefined);// -> undefined
或
const { B: { C : d } = {} } = {}
console.log(d); // -> undefined