const linesImages = metrosLines.map((line, i) => {你好,我需要动态地将"metrosLines“上面的数组名称重命名为transport + 'Lines'.map((line,i) =>
传输(this.props.transport去结构化)是与父组件中的this.state.selectValue相等的支柱,
综上所述,如果运输轨道"rers",我需要做"rerLines.map",如果运输轨道“===”,我需要做"metrosLines.map",如果运输电车“metrosLines.map”我需要做"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} />;
});发布于 2018-12-25 21:42:38
如果您可以将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()发布于 2018-12-25 21:39:12
您可以执行以下操作:
const lines = {
metrosLines,
rersLines,
tramwaysLines
}然后访问如下代码行:
lines[transport + "Lines"].map()发布于 2018-12-25 21:40:54
在给你答案之前,我需要提醒你一下。如果您完全按照原样执行操作,并且打算在不保留关联映射或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的需要,同时保留了代码中的大部分自由。
https://stackoverflow.com/questions/53922858
复制相似问题