当前位置: 首页 > 知识库问答 >
问题:

for-loop-in-react

敖淮晨
2023-03-14

我得到了这个函数,从一个. json文件中得到一些体育课。

    filtrarClase(dia, hora) {
    let data = this.state.data
    return data.filter(clase => {
        if ((clase.dia === dia) && (clase.horaclase === hora)) {
            return clase.actividad
        } else { 
            return false
        }
    })
    .map((clase,i) => {
        return (
            <li key={i} className={clase.estilo}>{clase.actividad}
                <p className="duracion">{clase.duracion}</p>
                <p className="sala">{clase.hoy} {clase.sala}</p>
            </li>
        )
    })        
}

没关系,只要通过一些“一天一小时”的考试,就会得到正确的课程。但是我找不到循环这个函数的方法。。。只有这样才能做到****

<div className="horario-container">                 
                <ul className="horario-hora">{horas[0]}</ul>
                <ul className="horario-item">{this.filtrarClase(1, horas[0])}</ul>
                <ul className="horario-item">{this.filtrarClase(2, horas[0])}</ul>
                <ul className="horario-item">{this.filtrarClase(3, horas[0])}</ul>
                <ul className="horario-item">{this.filtrarClase(4, horas[0])}</ul>
                <ul className="horario-item">{this.filtrarClase(5, horas[0])}</ul>
                <ul className="horario-item">{this.filtrarClase(6, horas[0])}</ul>                   
            </div> 

一遍又一遍...17次...

            <div className="horario-container">                 
                <ul className="horario-hora">{horas[1]}</ul>
                <ul className="horario-item">{this.filtrarClase(1, horas[16])}</ul>
                <ul className="horario-item">{this.filtrarClase(2, horas[16])}</ul>
                <ul className="horario-item">{this.filtrarClase(3, horas[16])}</ul>
                <ul className="horario-item">{this.filtrarClase(4, horas[16])}</ul>
                <ul className="horario-item">{this.filtrarClase(5, horas[16])}</ul>
                <ul className="horario-item">{this.filtrarClase(6, horas[16])}</ul>                   
            </div>

我相信你可以用“for”或“forEach”来为我指明正确的方向,或者希望如此!我试过这个:

    actualizarLista(dia){
    const horas = ['07:30','08:15','08:30','09:30','10:30','15:00','15:15','15:30','17:30','18:00','18:15','18:30','19:00','19:30','20:00','20:30','21:30']
    for (let i=0; i<horas.length;i++){
        return <ul className="horario-item">{this.filtrarClase(dia, horas[i])}</ul>
    }

}

render() {
    let dias = [1,2,3,4,5,6]
    for (let i=0; i<dias.length;i++){
        this.actualizarLista(i)
    }
    return (
        <div className="App">
            <div className="horario-container">
                <div className="horario-list">{dias}</div> .........

我尝试了一个for循环,但只返回1项,所以我肯定做错了什么。提前谢谢。

共有1个答案

穆理
2023-03-14

原因是,因为循环用于迭代数组,所以它永远不会返回任何内容,如果要返回某些内容,请使用map

这样写:

actualizarLista(dia){
    const horas = ['07:30','08:15','08:30','09:30','10:30','15:00','15:15','15:30','17:30','18:00','18:15','18:30','19:00','19:30','20:00','20:30','21:30']
    return horas.map((el, i) => {
        return <ul className="horario-item">{this.filtrarClase(dia, el)}</ul>
    })
}

render() {
    let dias = [1,2,3,4,5,6];
    let uiItems = dias.map(i => {
        return  <div className="horario-container" key={i}>
                    {this.actualizarLista(i)}
                </div>            
    })       

    return (
        <div className="App">
            {uiItems}
        </div>  
    )      
}

建议:horas数组是常量,所以我建议您在类外定义它一次。

 类似资料:
  • 构造循环允许您实现像其他语言中最常见的for循环之类的迭代。 它允许你 为迭代设置变量 指定将有条件地终止迭代的表达式 指定用于在每次迭代中执行某些作业的表达式 指定表达式,以及在退出循环之前执行某些工作的表达式 构造的for循环遵循几种语法 - (loop for loop-variable in <a list> do (action) ) (loop for loop-variable

  • 我的问题很简单:是一个,下面是我的代码: 指向的行是(Balle b:listeBalles){行的

  • 问题内容: 我想知道是否在循环周期结束时在Java中执行条件评估并在Java中循环。 例: 请问BE执行每次循环周期结束的时间? 假设和经验告诉我是的。 我知道在此示例中,它是一个常量,因此不会对性能产生影响。 但是让我们假设条件操作在不同情况下花费的时间很长。我知道接下来要做的逻辑就是将赋给变量。 我仍然要确保每次都对其进行评估。 问题答案: 是的,它将在每次循环迭代时逻辑上评估整个中间操作数。

  • 我用java为循环做了一些运行时测试,发现了一个奇怪的行为。对于我的代码,我需要像int、Double等原始类型的包装对象来模拟io和输出参数,但这不是重点。看看我的代码。具有字段访问权限的对象怎么会比原始类型更快? 带压缩型的循环: 结果: MicroTime原语(max:=10000.0):110 MicroTime原语(max:=100000.0):1081 MicroTime原语(max:

  • Upload, convert and combine your files to PDF from a tidy toolbar, without the conversion getting in the way of your Web browsing. LOOP for Firefox allows you to convert and combine files to PDF with

  • 我有一个循环,循环一个数据帧的长度,并遍历一个团队列表。我的循环应该经过41行,但它只做了2行,然后停止,我不知道为什么它停止了。在我看来,我应该循环通过整个41个队名单,但它停止后索引两个队。 这是运行日志