const linesImages = metrosLines.map((line, i) => {
您好,我需要动态地重命名“ metrosLines”上方的数组名称以传输+'Lines'.map((line,i)=>
运输(已解构的this.props.transport)是与父组件中的this.state.selectValue相等的道具,
总而言之,如果传输===“ rers”,我需要执行“ rerLines.map”, 如果运输===“ metros”,我需要做“ metrosLines.map”,如果运输===“ tramways”,我需要做“ tramwaysLines.map”,
有人知道如何动态命名要映射的数组吗?
谢谢
const { transport, data } = this.props;
const transportImage = require(`../../../images/${transport}/${transport}.svg`);
const metrosLines = ['1', '2', '3', '3bis', '4', '5', '6', '7', '7bis', '8', '9', '10', '11', '12', '13', '14'];
const rersLines = ['a', 'b', 'c', 'd', 'e'];
const tramwaysLines = ['1', '2', '3a', '3b', '5', '6', '7', '8'];
const linesImages = metrosLines.map((line, i) => {
const importLineImage = require(`../../../images/${transport}/${line}.svg`);
return <Media object data-src="holder.js/64x64" src={ importLineImage } alt="Logo ligne métro RATP" key={i} />;
});
答案 0 :(得分:1)
您可以执行以下操作:
const lines = {
metrosLines,
rersLines,
tramwaysLines
}
,然后访问以下行:
lines[transport + "Lines"].map()
答案 1 :(得分:1)
在给您答案之前,我需要警告您。如果您完全按照原样进行操作,并且打算动态查找内容而不保留关联地图或switch
,则eval()
是您唯一的选择。您需要意识到这一点,因为您需要确保transport
不包含任何令人讨厌的内容。
const metrosLines = ['1', '2', '3', '3bis', '4', '5', '6', '7', '7bis', '8', '9', '10', '11', '12', '13', '14'];
const rersLines = ['a', 'b', 'c', 'd', 'e'];
const tramwaysLines = ['1', '2', '3a', '3b', '5', '6', '7', '8'];
var transport = 'metros';
console.log(eval(transport+"Lines"));
但是,如果您愿意稍微更改结构,则可以使用以下方法:
const lines = {
metros: ['1', '2', '3', '3bis', '4', '5', '6', '7', '7bis', '8', '9', '10', '11', '12', '13', '14'],
rers: ['a', 'b', 'c', 'd', 'e'],
tramways: ['1', '2', '3a', '3b', '5', '6', '7', '8']
}
var transport = "rers";
console.log(lines[transport]);
在保留您代码中的大多数自由的同时,无需使用eval
。
答案 2 :(得分:1)
如果您可以将MetrosLines,rersLines和tramwaysLines转换为以它们为键的对象,例如
const lines = {
metrosLines : ['1', '2', '3', '3bis', '4', '5', '6', '7', '7bis', '8', '9', '10', '11', '12', '13', '14'],
rersLines : ['a', 'b', 'c', 'd', 'e'],
tramwaysLines : ['1', '2', '3a', '3b', '5', '6', '7', '8']
}
那么您可以喜欢
lines[`${transport}Lines`].map()