You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中扁平化JSON数组内的指定position属性?

只扁平化JSON中的position属性解决方案

嘿,我懂你要的是什么——不想把整个JSON都拆得七零八落,就只想把每个对象里的position嵌套属性拆成顶层的lat和lng对吧?这事儿不难,咱们直接针对目标字段处理就行,不用动其他结构。

假设你的原始JSON数组存在变量data里,我给你两种常用的处理方式,按需选就行:

方式一:保留原position字段

如果还想保留原来的position嵌套结构,同时在顶层新增lat和lng,可以用下面的代码(以JavaScript为例):

const data = [
  { 
    amount:"1 teine med 110 mtr iletau", 
    comment:"", 
    created:"Tue May 17 2016 00:00:00 (W. Europe Standard Time)", 
    locationDescription:"På vestsiden av Jeløya, utenfor Moss. (Oslofjorden).", 
    position:{lat: 59.441388, lng: 10.579491}, 
    time:"15-05-2016", 
    type:"Teine", 
    userId:"" 
  },
  // 其他数组元素...
];

const flattenedData = data.map(item => ({
  ...item, // 展开原对象的所有属性
  lat: item.position.lat, // 提取position里的lat到顶层
  lng: item.position.lng  // 提取position里的lng到顶层
}));

方式二:删除原position字段

要是你想彻底把position字段去掉,只保留顶层的lat和lng,可以用解构赋值来处理:

const flattenedData = data.map(({ position, ...rest }) => ({
  ...rest, // 展开除了position之外的所有属性
  lat: position.lat,
  lng: position.lng
}));

更健壮的版本(兼容无position的情况)

如果数组里可能存在没有position属性的对象,为了避免报错,可以加个判断:

const flattenedData = data.map(item => {
  const result = { ...item };
  // 只有当item存在position时才处理
  if (item?.position) {
    result.lat = item.position.lat;
    result.lng = item.position.lng;
    // 要是想删除position,就解开下面这行注释
    // delete result.position;
  }
  return result;
});

这样处理完之后,你得到的新数组就只有position被扁平化了,其他字段的结构完全保持原样,完美符合你的需求~

内容的提问来源于stack exchange,提问作者Shikha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:38:04