Javascript 在reactjs中将项目映射并展平为单个数组
目前,我有一个reactjs函数,它只需查询一个PockDB文档,获取7条记录,然后我尝试将这些记录展平,以便存储在状态中。问题是,现在当我使用console.logJavascript 在reactjs中将项目映射并展平为单个数组,javascript,reactjs,Javascript,Reactjs,目前,我有一个reactjs函数,它只需查询一个PockDB文档,获取7条记录,然后我尝试将这些记录展平,以便存储在状态中。问题是,现在当我使用console.logdoccarries时,我得到以下信息: (7) [{…}, {…}, {…}, {…}, {…}, {…}, {…}] 0: {caloriesBurned: "5345", createdAt: "2020-03-28T05:15:24.369Z"} 1: {caloriesBurned: "1234", created
doccarries
时,我得到以下信息:
(7) [{…}, {…}, {…}, {…}, {…}, {…}, {…}]
0: {caloriesBurned: "5345", createdAt: "2020-03-28T05:15:24.369Z"}
1: {caloriesBurned: "1234", createdAt: "2020-03-28T10:39:16.901Z"}
2: {caloriesBurned: "1122", createdAt: "2020-03-28T10:32:03.100Z"}
3: {caloriesBurned: "1234", createdAt: "2020-03-28T05:16:54.846Z"}
4: {caloriesBurned: "1234", createdAt: "2020-03-28T10:21:31.092Z"}
5: {caloriesBurned: "1234", createdAt: "2020-03-28T05:08:00.791Z"}
6: {caloriesBurned: "1234", createdAt: "2020-03-28T05:07:35.940Z"}
length: 7__proto__: Array(0)
但我想得到这样的东西:
map: [5345,1234,1122,1234,1234,1234,1234]
所以基本上一个物体包含了每个doc燃烧热量值的7个数字
我在这里做错了什么?我如何才能正确地将它们放入一个数组/对象中
setMax = () => {
this.state.caloriesDB.db.find({
selector: {
$and: [
{_id: {"$gte": null}},
{caloriesBurned: {$exists: true}},
{createdAt: {$exists: true}}
]
},
fields: ['caloriesBurned', 'createdAt'],
sort: [{'_id':'desc'}],
limit: 7
}).then(result => {
const newDocs = result.docs;
const docCalories = newDocs.map((caloriesBurned) => caloriesBurned)
console.log('this is map');
console.log(docCalories);
}).catch((err) =>{
console.log(err);
});
}
您将在map函数中返回整个对象,而应该只发送
卡路里燃烧
属性
const docCalories = newDocs.map((data) => data.caloriesBurned)
或者如果你愿意,我们可以销毁数据
const docCalories = newDocs.map(({caloriesBurned}) => caloriesBurned)
杜波卡斯在评论中所写的是正确的
newDocs
是一个对象列表,使用此代码:
const docCalories = newDocs.map((caloriesBurned) => caloriesBurned)
您将得到另一个类似于newDocs
的列表。您希望从map函数返回的是一个特定的键,因此请尝试:
const docCalories = newDocs.map(doc => doc.caloriesBurned)
考虑到通过创建地图,m2中的
doccarries
值,您可以这样做-const m2 = new Map(Object.entries([{
0: {
caloriesBurned: "5345",
createdAt: "2020-03-28T05:15:24.369Z"
}
},
{
1: {
caloriesBurned: "1234",
createdAt: "2020-03-28T10:39:16.901Z"
}
},
{
2: {
caloriesBurned: "1122",
createdAt: "2020-03-28T10:32:03.100Z"
}
},
{
3: {
caloriesBurned: "1234",
createdAt: "2020-03-28T05:16:54.846Z"
}
},
{
4: {
caloriesBurned: "1234",
createdAt: "2020-03-28T10:21:31.092Z"
}
},
{
5: {
caloriesBurned: "1234",
createdAt: "2020-03-28T05:08:00.791Z"
}
},
{
6: {
caloriesBurned: "1234",
createdAt: "2020-03-28T05:07:35.940Z"
}
}
]))
var store = [];
Array.from(m2).map(([key, value]) => store.push(value[key].caloriesBurned));
console.log(store);
const result=data.map(x=>+x.caroriesburned)
因此,她的问题是doccarries
包含字符串数组而不是数字数组?@Dupocas您的结果在我的控制台中给出了我想要的结果,但由于某种原因,在我执行this.setState({maxcarries:doccarries})之后
当我用数据:[53451234112212341234412341234]替换文件中的一行时,
用数据:[this.maxcarries]
我现在得到一个结果,你的结果给出了我在控制台中想要的结果,但由于某种原因,在我这样做之后。当我替换文件数据中的一行时,[534512341122411234112341234441234]设置状态({maxcarries:doccarries})有了数据:[this.maxcarries]我现在明白了,我不明白你想说什么。你可以再问一个问题,我会尽力帮你的。那太好了,谢谢你。在这儿