我对React很陌生,所以我想问你,是否有任何方法可以循环遍历React中的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>
标签中。
答案 0 :(得分:2)
您可以如下迭代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>
答案 1 :(得分:1)
很简单。在循环中返回这样的列表:
<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>
}
答案 2 :(得分:1)
在React中,通常使用Array#map之类的数组方法。在您的React组件代码中,如果outerArray
是一个数组数组,则可以这样处理:
return (
<ul>
{outerArray.map((innerArray) => (
<li>
{innerArray.map((item) => <li>{item}</li>)}
</li>
))}
</ul>
);
答案 3 :(得分:0)
最简单的方法是使用Array.prototype.map()
循环遍历jsx内部的数组:
render() {
return (
<ul>
{db.map(entries => (
<li>
<ul>
{entries.map(entry => (
<li>{entry}</li>
))}
</ul>
</li>
))}
</ul>
);
}