我希望将此代码的结果转换为数组。
>User
.find()
.select("-_id services.location ")
.lean()
.exec(function(err,users){
if (err) {
console.log("Error Finding the users")
} else {
users=JSON.stringify(users);
console.log("new:-",users)
console.log(users)
res.render('allroads1',{users:users})
}
})
我得到的结果是:-
[{"services":[{"location":[17.4374614,78.4482878]},{"location": [17.4020637,78.48400519999996]}]}]
我希望结果的格式为:-
[
"17.4374614",
"78.4482878",
"17.4020637",
"78.484005199996"
]
我的架构类似于数字数组:-位置:[{type:Number}]。我正在使用把手作为模板引擎。 ##
答案 0 :(得分:0)
如果将初始响应格式化为数组,则以下代码应该可以帮助您完成所需的工作,本质上,我们使用map来获取值,然后进行合并和缩小以简化数组。
var x = [[{"services":[{"location":[17.4374614,78.4482878]},{"location": [17.4020637,78.48400519999996]}]}]
,[{"services":[{"location":[17.4374614,78.4482878]},{"location":[17.4020637,78.48400519999996]}]}]
].map(function(obj) {
return obj[0]['services'].map(function(obj){
return obj['location']
});
}).reduce(function(acc, val){
return acc.concat(val);
}).reduce(function(acc, val) {
return acc.concat(val);
});
console.log(x);
给予
[ 17.4374614,
78.4482878,
17.4020637,
78.48400519999996,
17.4374614,
78.4482878,
17.4020637,
78.48400519999996 ]
因此不包含reduce和catenate:
var x = [[{"services":[{"location":[17.4374614,78.4482878]},{"location": [17.4020637,78.48400519999996]}]}]
,[{"services":[{"location":[17.4374614,78.4482878]},{"location":[17.4020637,78.48400519999996]}]}]
].map(function(obj) {
return obj[0]['services'].map(function(obj){
return obj['location']
});
});
console.log(x);
你得到
[ [ [ 17.4374614, 78.4482878 ],
[ 17.4020637, 78.48400519999996 ] ],
[ [ 17.4374614, 78.4482878 ],
[ 17.4020637, 78.48400519999996 ] ] ]
您得到的响应非常混乱,对象数组由两个数组组成,等等,但是使用map从对象数组中删除,并且由于还有一个大小为1的数组,这就是为什么存在obj [0]的原因