如何解决从动态字符串名称解构对象
我得到了这个config.json文件:
"signs_table": {
"id_field": "dummy_id_field_name","prop" : "dummy_prop_name"
...
}
此文件包含用于存储在数据库中的大量表的大量配置。每个表都有不同的字段名称,但是我的代码的配置对于每个表都是相同的(一个ID字段名称,不同的属性字段,但是当然字段名称在表之间是不同的。)
因此,在我的代码中,我正在获取一个数据对象,并且希望能够将其分解为动态命名的属性(来自配置),如下所示:
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文件的类方法,它基本上可以检索属性。
到目前为止,我发现了这种有用的方法: ES6 — How to destructure from an object with a string key?
但这对我没有帮助,因为我需要先从配置文件中检索字段名称...
有什么想法吗?
解决方法
您无法避免先从配置文件中获取字段名称:
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);
,
您可以解构任意属性名称,如下文所示,但问题是为什么您要强迫自己使用不熟悉的语法。您应该坚持可读和直接的方法,而不是花哨的复杂方法。
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;
直接避免完全解构并直接访问字段会更直接。
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];
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。