如何将json数组修改组成新的数组?

var json1 = [
    {w:10,h:20,x:12,y:20,url:"..."},
    {w:20,h:30,x:15,y:15,url:"..."}
]

修改为新的json数组

[
    {coords: "x,y,x+w,y+h",type: "path",url: "..."},
    {coords: "x,y,x+w,y+h",type: "path",url: "..."}
]

所示coords的值是josn1里的x、y代表的值或者相加的值

阅读 608
3 个回答

将JSON数组修改组成新的数组通常涉及到解析JSON数据,然后根据需要进行操作,最后可能需要转换成新的JSON格式。以下是一个使用JavaScript示例,展示如何将JSON数组修改组成新的数组:

假设我们有一个如下的JSON数组:

[
  {"id": 1, "name": "Alice", "age": 24},
  {"id": 2, "name": "Bob", "age": 30},
  {"id": 3, "name": "Charlie", "age": 20}
]

现在我们想要创建一个新的JSON数组,其中包含每个人的名字和年龄,但是"Alice"的名字要变形为"Al",而且只取小于等于25岁的人的信息。

以下是实现这个过程的步骤:

解析JSON数组为JavaScript数组。
对数组进行遍历。
检查每个人的年龄是否小于等于25。
如果年龄符合条件,修改其名字(或者添加到新的数组中)。
建立新的对象并添加到新的数组。


// 原始JSON数组
let jsonArray = `[
  {"id": 1, "name": "Alice", "age": 24},
  {"id": 2, "name": "Bob", "age": 30},
  {"id": 3, "name": "Charlie", "age": 20}
]`;

// 解析JSON数组,并创建新的数组
let newArray = JSON.parse(jsonArray)
  .filter(person => person.age <= 25) // 只保留25岁及以下的人
  .map(person => ({ name: person.name.slice(0, 2), age: person.age })); // 修改名字, 并保留年龄

// 输出新的JSON数组
console.log(JSON.stringify(newArray));
这段代码将输出如下新的JSON数组:

[{"name": "Al", "age": 24}, {"name": "Cha", "age": 20}]

JSON数据通常不能直接通过添加或修改来改变,它是由键值对组成的字符串表示形式,因此首先需要将其解析成一个JavaScript对象,然后才能进行修改。

var json1 = [
  { w: 10, h: 20, x: 12, y: 20, url: "..." },
  { w: 20, h: 30, x: 15, y: 15, url: "..." }
];
const resultList = [];
json1.forEach(item => {
  const coords = `${item.x},${item.y},${item.x + item.w},${item.y+item.h}`;
resultList.push({
   coords,
   type: "path",
   url: item.url
})
})
console.log(resultList)

[
    {
        "coords": "12,20,22,40",
        "type": "path",
        "url": "..."
    },
    {
        "coords": "15,15,35,45",
        "type": "path",
        "url": "..."
    }
]
json1.map(({ x, y, w, h, url }) => ({
  coords: `${x},${y},${x + w},${y + h}`,
  type: "path",
  url: url,
}));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏