[英]React js - mapping over multiple arrays to get one array
我有以下代码:
let getEntries = Object.entries(this.state.items).forEach(([key, value]) => {
let pos = value[1].location;
for (var lat in pos) {
let lt = ${pos[lat]};
this.setState({lat: this.state.lat.concat(lt)});
};
for (var lon in pos) {
let ln = ${pos[lon]};
this.setState({lon: this.state.lon.concat(ln)})
};
let latLng = this.state.lat.map((value,index)=>[parseFloat(value),parseFloat(this.state.lon[index])]);
this.setState({latLng});
});
如果我使用console.log
latLng
状态, latLng
得到以下结构:
[
[val1, val2]
[val1, val2]
[valN, valN]
]
如您所见,我通过遍历相应的对象来获取对象值,然后在let latLng
,使这些值形成单个数组。 它可以按照预期的方式工作,但是我还需要一些其他数据才能放在该latLng
数组中。 我以相同的方式获得此数据,例如:
let getMessage = Object.entries(this.state.items).forEach(([key, value]) => {
let value = value[1].message;
for (var i in value) {
let messages = value[i];
this.setState({messages: this.state.messages.concat(messages)});
}
});
let getSomethingOther = Object.entries(this.state.items).forEach(([key, value]) => {
let someValue = value[1].someProperty;
for (var someProp in someValue) {
let someOutput = someValue[someProp];
this.setState({someState: this.state.someState.concat(someOutput)});
}
});
这些函数可以工作,但是现在我需要将它们放入存储在状态中的latLng
数组中,并可以使用this.state.latLng
进行this.state.latLng
。 我想我需要像第一个示例中的map
函数之类的东西,但是我无法使其正常工作。 最终,我需要可以通过this.state.latLng
使用的结构:
[
[val1, val2, val3, val4]
[val1, val2, val3, val4]
[val1, val2, val3, val4]
[valN, valN, valN, valN]
]
我该怎么办?
我在这里试图做的是简化以帮助您达到目标。 希望能帮助到你
let getEntries = Object.entries(this.state.items).map(key, value) => {
const latlon = this.state.latlng.concat([pos.lat, pos.lon])
this.setState({ lat: this.state.lat.concat(pos.lat), lon: this.state.lon.concat(pos.lon) }, () => this.setState({ latlon }))
});
我相信您正在寻找flatMap()
函数。 las,我无法在reactjs中用Google找到它。 也许您可以使用这种漂亮而最少的单行Javascript实现 ?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.