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”文件中