Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点映射并将结果过滤到新数组中_Javascript_Arrays - Fatal编程技术网

Javascript 节点映射并将结果过滤到新数组中

Javascript 节点映射并将结果过滤到新数组中,javascript,arrays,Javascript,Arrays,我在放屁,有人能告诉我正确的方向吗 目标:从查询中获取行,将行格式化为以ID为索引的新坐标数组 来自查询的响应示例: 这是一个从mysql查询返回的对象数组。消除了可能的混乱 [ { id: 2031, store_id: 12, latitude: '40.734479', longitude: '-73.998943' }, { id: 2041, store_id: 12,

我在放屁,有人能告诉我正确的方向吗

目标:从查询中获取行,将行格式化为以ID为索引的新坐标数组

来自查询的响应示例: 这是一个从mysql查询返回的对象数组。消除了可能的混乱

[
    {
        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查询返回。这是一个对象数组。我只是从控制台上抄的我刚刚清除了输入,以明确这一点。可能重复的