从动态字符串名称解构对象
Destructuring an object from a dynamic string name
我得到了这个 config.json 文件:
"signs_table": {
"id_field": "dummy_id_field_name",
"prop" : "dummy_prop_name"
...
}
此文件包含用于存储在数据库中的大量 table 的大量配置。每个 table 都有不同的字段名称,但我的代码配置对于每个 table 都是相同的(一个 Id 字段名称,不同的 属性 字段,当然字段名称从 table 到 table).
所以,在我的代码中,我得到了一个数据对象,我希望能够将它分解为动态命名的属性(来自配置),就像这样:
const { dummy_id_field_name, dummy_prop_name} = this.props.data
但这是硬编码方式。我想根据配置文件加载命名属性。
像 :
const IdField = config.get("signs_table").id_field // this will retrieve the actual field name from config.json I want to be able to pass it through the destructuring operation
const PropField = config.get("signs_table").prop
const { IdField , PropField } = data
这里的 config.get("signs_table")
行来自管理我的 config.json 文件的 class 方法...它基本上检索 属性.
到目前为止,我发现了这个有用的方法:
但这对我没有帮助,因为我需要先从配置文件中检索字段名称...
有什么想法吗?
您无法避免首先从配置文件中获取字段名称:
const { id_field: IdField, pro: PropField } = config.get("signs_table"); // this will retrieve the actual field names from config.json
然后,之后您可以在解构实际数据时使用这些作为计算的 属性 名称:
const { [IdField]: idValue , [PropField]: propValue } = this.props.data;
console.log(idValue, propValue);
您可以 de-structure 任意 属性 名称,如下所示,但问题是您为什么要强迫自己使用您不熟悉的语法。您应该坚持使用可读且直接的方法,而不是一些花哨的复杂方法。
const idField = config.get("signs_table").id_field; // this will retrieve the actual field name from config.json I want to be able to pass it through the destructuring operation
const propField = config.get("signs_table").prop;
const { [idField]: idValue, [propField]: propValue } = data;
完全避免 de-structuring 并直接访问字段会更直接。
const idField = config.get("signs_table").id_field; // this will retrieve the actual field name from config.json I want to be able to pass it through the destructuring operation
const propField = config.get("signs_table").prop;
const idValue = data[idField];
const propValue = data[propField];
我得到了这个 config.json 文件:
"signs_table": {
"id_field": "dummy_id_field_name",
"prop" : "dummy_prop_name"
...
}
此文件包含用于存储在数据库中的大量 table 的大量配置。每个 table 都有不同的字段名称,但我的代码配置对于每个 table 都是相同的(一个 Id 字段名称,不同的 属性 字段,当然字段名称从 table 到 table).
所以,在我的代码中,我得到了一个数据对象,我希望能够将它分解为动态命名的属性(来自配置),就像这样:
const { dummy_id_field_name, dummy_prop_name} = this.props.data
但这是硬编码方式。我想根据配置文件加载命名属性。 像 :
const IdField = config.get("signs_table").id_field // this will retrieve the actual field name from config.json I want to be able to pass it through the destructuring operation
const PropField = config.get("signs_table").prop
const { IdField , PropField } = data
这里的 config.get("signs_table")
行来自管理我的 config.json 文件的 class 方法...它基本上检索 属性.
到目前为止,我发现了这个有用的方法:
但这对我没有帮助,因为我需要先从配置文件中检索字段名称...
有什么想法吗?
您无法避免首先从配置文件中获取字段名称:
const { id_field: IdField, pro: PropField } = config.get("signs_table"); // this will retrieve the actual field names from config.json
然后,之后您可以在解构实际数据时使用这些作为计算的 属性 名称:
const { [IdField]: idValue , [PropField]: propValue } = this.props.data;
console.log(idValue, propValue);
您可以 de-structure 任意 属性 名称,如下所示,但问题是您为什么要强迫自己使用您不熟悉的语法。您应该坚持使用可读且直接的方法,而不是一些花哨的复杂方法。
const idField = config.get("signs_table").id_field; // this will retrieve the actual field name from config.json I want to be able to pass it through the destructuring operation
const propField = config.get("signs_table").prop;
const { [idField]: idValue, [propField]: propValue } = data;
完全避免 de-structuring 并直接访问字段会更直接。
const idField = config.get("signs_table").id_field; // this will retrieve the actual field name from config.json I want to be able to pass it through the destructuring operation
const propField = config.get("signs_table").prop;
const idValue = data[idField];
const propValue = data[propField];