Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS中每个循环的a中变量的范围_Javascript_Reactjs_Variables_Scope - Fatal编程技术网

Javascript JS中每个循环的a中变量的范围

Javascript JS中每个循环的a中变量的范围,javascript,reactjs,variables,scope,Javascript,Reactjs,Variables,Scope,在给定的react组件sinppet中,在for-each循环中,编译器表示未定义行,如何修复此问题?数据为object类型,列为字符串数组 for(var row in data) { <tr> { columns .map(column =>

在给定的react组件sinppet中,在for-each循环中,编译器表示未定义行,如何修复此问题?数据为object类型,列为字符串数组

for(var row in data) {
                <tr>
                    {
                        columns
                            .map(column =>
                                (<td>{row[column]}</td>)
                            )
                    }
                </tr>
            }
for(数据中的变量行){
{
柱
.map(列=>
({行[列]})
)
}
}

不过,我在这里并不是在处理范围查询,我会按照下面的方式来做。 测试代码沙盒链接

{Object.keys(data.map)(行,索引)=>(
{columns.map((列,_索引)=>(
{数据[行][列]}
))}
))}

您的代码有两个问题:

  • 如果您试图在JSX中使用此选项,则会得到未定义的行,因为在JSX中不能使用for关键字。您需要映射到@Appaji指出的对象条目上

  • 当您说“for var row in data”时,在循环的每次迭代中,row的值将是数据的键。由于您试图访问的是行的值而不是键,因此可能需要将其更改为data[row]。或者你可以反对

  • 所以你的代码应该是

        Object.values(data).map(row => {
            <tr>
                {
                    columns
                        .map(column =>
                            (<td>{row[column]}</td>)
                        )
                }
            </tr>
        })
    
    Object.values(data.map)(行=>{
    {
    柱
    .map(列=>
    ({行[列]})
    )
    }
    })
    
    tr
    在何处呈现或存储?为什么不以与
    相同的方式循环
    数据
        Object.values(data).map(row => {
            <tr>
                {
                    columns
                        .map(column =>
                            (<td>{row[column]}</td>)
                        )
                }
            </tr>
        })