首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在数组上动态命名为.map

如何在数组上动态命名为.map
EN

Stack Overflow用户
提问于 2018-12-25 21:34:14
回答 3查看 349关注 0票数 1
代码语言:javascript
运行
复制
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",

有人知道如何动态命名映射到的数组吗?

谢谢

代码语言:javascript
运行
复制
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} />;
});
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-12-25 21:42:38

如果您可以将metrosLines、rersLines和tramwaysLines转换为一个对象,并使用这些作为关键字,例如

代码语言:javascript
运行
复制
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']
}

然后你就可以像你一样

代码语言:javascript
运行
复制
lines[`${transport}Lines`].map()
票数 1
EN

Stack Overflow用户

发布于 2018-12-25 21:39:12

您可以执行以下操作:

代码语言:javascript
运行
复制
const lines = {
    metrosLines,
    rersLines,
    tramwaysLines
}

然后访问如下代码行:

代码语言:javascript
运行
复制
lines[transport + "Lines"].map()
票数 1
EN

Stack Overflow用户

发布于 2018-12-25 21:40:54

在给你答案之前,我需要提醒你一下。如果您完全按照原样执行操作,并且打算在不保留关联映射或switch的情况下动态查找内容,那么eval()是您唯一的选择。您需要意识到这一点,因为您需要确保transport不包含任何令人讨厌的内容。

代码语言:javascript
运行
复制
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"));

但是,如果你愿意稍微改变一下你的结构,你可以这样做:

代码语言:javascript
运行
复制
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的需要,同时保留了代码中的大部分自由。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53922858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档