Javascript 如何使用字符串名称映射对象以引用该对象?
我试图减少代码中的硬编码值。目前的设置如下所示Javascript 如何使用字符串名称映射对象以引用该对象?,javascript,javascript-objects,Javascript,Javascript Objects,我试图减少代码中的硬编码值。目前的设置如下所示 //FROM THE DATA FILE AppleTable = [ {name: 'test', type: 'fruit' }, {name: 'test2', type: 'fruit' }, {name: 'test3', type: 'fruit' },] BananaTable = [ {name: 'test', type: 'fruit' }, {name: 'test2', type: 'fruit' }, {name: 't
//FROM THE DATA FILE
AppleTable = [
{name: 'test', type: 'fruit' },
{name: 'test2', type: 'fruit' },
{name: 'test3', type: 'fruit' },]
BananaTable = [
{name: 'test', type: 'fruit' },
{name: 'test2', type: 'fruit' },
{name: 'test3', type: 'fruit' },]
//IN A DIFFERENT FILE
import {AppleTable, BananaTable} from './Data'
var result = [];
var all = [];
if (category === 'Apples'){
result = AppleTable.map(value)
all = Objects.values('AppleTable')
}
但是我如何摆脱它的硬编码方面,以便使用如下所示的新Tables对象中的“TableID”访问AppleTable和BananaTable中的信息?我有一个名为Tables的新对象,我尝试了以下方法,例如:
//FROM THE DATA FILE
export const Tables = [
{name: 'Apple' , TableID: 'AppleTable'},
{name: 'Banana' , TableID: 'BananaTable'}
]
export const AppleTable = [
{name: 'test', type: 'fruit' },
{name: 'test2', type: 'fruit' },
{name: 'test3', type: 'fruit' }
]
export const BananaTable = [
{name: 'test', type: 'fruit' },
{name: 'test2', type: 'fruit' },
{name: 'test3', type: 'fruit' }
]
//IN A DIFFERENT FILE
import {Tables} from './Data'
var result = [];
var all = [];
var TableName = '';
for (var i = 0 ; i < Tables.length ; i++){
if (category === Tables[i].name){
TableName = Tables[i].TablesID //THIS IS THE NAME OF THE TABLE I WANT
result = [TableName].map(value) //CARRIED OUT MAPPING USING THAT TABLE
all = Objects.values([TableName]) //GET ALL THE VALUES BASED ON THAT TABLE NAME
}
}
//从数据文件
导出常量表=[
{name:'Apple',TableID:'AppleTable'},
{name:'Banana',TableID:'BananaTable'}
]
导出常量AppleTable=[
{name:'test',type:'fruit'},
{name:'test2',键入:'fruit'},
{name:'test3',键入:'fruit'}
]
导出常量BananaTable=[
{name:'test',type:'fruit'},
{name:'test2',键入:'fruit'},
{name:'test3',键入:'fruit'}
]
//在另一个文件中
从“/Data”导入{Tables}
var结果=[];
var all=[];
var TableName='';
对于(变量i=0;i
我知道这是不正确的-我如何获得它,以便它映射来自这些表的数据,而不是映射字符串名称。因此,您可以不设置字符串,只需将表设置为引用主数据文件中的
TableID
属性,如:
//FROM THE DATA FILE
const AppleTable = [
{name: 'test', type: 'fruit' },
{name: 'test2', type: 'fruit' },
{name: 'test3', type: 'fruit' }
]
const BananaTable = [
{name: 'test', type: 'fruit' },
{name: 'test2', type: 'fruit' },
{name: 'test3', type: 'fruit' }
]
export const Tables = [
{name: 'Apple' , TableID: AppleTable},
{name: 'Banana' , TableID: BananaTable}
]
然后在另一个文件中,您可以像这样访问它们:
if (category === Tables[i].name) {
TableName = Tables[i].TablesID
result = TableName.map(/* your mapping logic here */)
all = Object.values(TableName)
}
这回答了你的问题吗?创建一个包含这些数组的对象,然后按属性名引用它们。这里的
AppleTable
&BananaTable
是什么?阵列?它们实际上存储在哪里?仅在“”./Data“
文件中?是,这些表仅存储在“./Data”文件中