我是React的新手,所以我想问你,如果有任何方法在React中循环遍历2D数组。
2D数组示例:
const db = {
"1": {
"1": "aaa",
"2": "bbb",
"3": "ccc"
},
"two": {
"1": "ddd",
"2": "eee"
}
};
我的伪代码:
for(i = 1; i < db.lenght; i++){
for(j = 1; j < db[i].lenght; j++){
console.log(db[i][j]);
}
}
但我不知道如何在React中渲染它,例如在<ul>
标签中。
您可以如下所示迭代db
对象,并在列表中显示它们。
const db = {
"1": {
"1": "aaa",
"2": "bbb",
"3": "ccc"
},
two: {
"1": "ddd",
"2": "eee"
}
};
function App() {
return (
<ul className="App">
{Object.keys(db).map(keyOuter => {
return Object.keys(db[keyOuter]).map(keyInner => {
return (
<li key={`${keyInner}-${keyOuter}`}>{db[keyOuter][keyInner]}</li>
);
});
})}
</ul>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
这很简单。在循环中返回这样的列表:
<li>{db[i][j]}</li>
myList() {
let list = []
for(i = 1; i < db.lenght; i++){
for(j = 1; j < db[i].lenght; j++){
console.log(db[i][j]);
list.push(<li key={i+'-'+j}>{db[i][j]}</li>)
// when rendering list of array elements, wee need unique key
}
}
return list
}
render() {
return <ul>{this.myList()}</ul>
}
在React中,使用像Array#map这样的数组方法很常见。在你的React组件代码中,如果outerArray
是一个数组的arrray,你可以这样处理它:
return (
<ul>
{outerArray.map((innerArray) => (
<li>
{innerArray.map((item) => <li>{item}</li>)}
</li>
))}
</ul>
);
使用Array.prototype.map()
循环遍历jsx中的数组是最简单的:
render() {
return (
<ul>
{db.map(entries => (
<li>
<ul>
{entries.map(entry => (
<li>{entry}</li>
))}
</ul>
</li>
))}
</ul>
);
}