我有以下代码:
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
状态,我会得到以下结构:
[
[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
调用它。我想我需要像第一个示例中那样的 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 }))
});
关于javascript - React js - 映射多个数组以获得一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45189215/