Javascript 节点映射并将结果过滤到新数组中
我在放屁,有人能告诉我正确的方向吗 目标:从查询中获取行,将行格式化为以ID为索引的新坐标数组 来自查询的响应示例: 这是一个从mysql查询返回的对象数组。消除了可能的混乱Javascript 节点映射并将结果过滤到新数组中,javascript,arrays,Javascript,Arrays,我在放屁,有人能告诉我正确的方向吗 目标:从查询中获取行,将行格式化为以ID为索引的新坐标数组 来自查询的响应示例: 这是一个从mysql查询返回的对象数组。消除了可能的混乱 [ { id: 2031, store_id: 12, latitude: '40.734479', longitude: '-73.998943' }, { id: 2041, store_id: 12,
[
{
id: 2031,
store_id: 12,
latitude: '40.734479',
longitude: '-73.998943'
},
{
id: 2041,
store_id: 12,
latitude: '40.732912',
longitude: '-74.000083'
},
{
id: 2051,
store_id: 14,
latitude: '40.731053',
longitude: '-74.001423'
},
{
id: 2061,
store_id: 14,
latitude: '40.729696',
longitude: '-74.002186'
},
{
id: 2071,
store_id: 14,
latitude: '40.729121',
longitude: '-74.002473'
}
]
期望输出:
{
12:[
{ latitude: '40.734479', longitude: '-73.998943' },
{ latitude: '40.732912', longitude: '-74.000083' }
],
14:[
{ latitude: '40.731053', longitude: '-74.001423'},
{ latitude: '40.729696', longitude: '-74.002186'},
{ latitude: '40.729121', longitude: '-74.002473'}
]
}
以前,我使用for循环检查对象是否有属性,如果没有,则创建属性,然后填充数组
是否有更好的方法通过map和reduce和/或filter实现这一点
谢谢。您可以使用
数组来实现这一点。减少:
const myArr=[{
id:2031,
店铺编号:12,
纬度:'40.734479',
经度:'-73.998943'
}, {
id:2041,
店铺编号:12,
纬度:'40.732912',
经度:'-74.000083'
}, {
身份证号码:2051,
店铺编号:14,
纬度:'40.731053',
经度:'-74.001423'
}, {
身份证号码:2061,
店铺编号:14,
纬度:'40.729696',
经度:'-74.002186'
}, {
身份证号码:2071,
店铺编号:14,
纬度:'40.729121',
经度:'-74.002473'
}];
const merged=myArr.reduce((合并,项目)=>{
如果(!merged[item.store_id])merged[item.store_id]=[];
已合并[项目.存储\u id]。推送({
纬度:item.latitude,
经度:item.longitude,
});
返回合并;
}, {});
log(合并)
奇怪的输入,看起来像JSON,但不…同意。您能否澄清您列出的这些对象是否是数组的一部分?或者它们包含在其他类型的结构中?@GillesQuenot这是mysql查询返回。这是一个对象数组。我只是从控制台上抄的我刚刚清除了输入,以明确这一点。可能重复的