我有以下代码:
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]
]
我怎样才能达到这个目的?
答案 0 :(得分:0)
我在这里尝试做的是简化以帮助您实现您想要达到的目标。希望它有所帮助
file:///path/to/your/file.js
答案 1 :(得分:0)
我相信你正在寻找flatMap()
功能。唉,我不能谷歌 - 在reactjs找到它。也许你可以使用这个pretty and minimal one-line Javascript implementation?