用JS把两个Json数据封装为一个

这篇博客介绍了如何在JavaScript中将两个独立的JSON数据(例如动态数据和评论数据)进行封装。方法一是先分别获取数据再使用数组方法进行封装,需要注意避免变量提升和同步异步问题。方法二是同时获取数据,尽管效率较低,但可以减少接口请求次数。作者分享了自己的经验,希望对读者有所帮助,并欢迎业界专家提出建议。
摘要由CSDN通过智能技术生成

JS封装Json数据

记得在大学刚开始做项目时,总会有这样的功能需求,比如做一个动态显示,并显示相关动态的评论信息。而动态数据和动态评论数据分别位于不同的数据表中,后台只获能分别获取两个数据(如果后台可以把每个评论封装导对应得动态下就不用前端封装了,这里我说的是后台没有封装的情况),一个是全部的动态,一个是全部的评论,每条评论有个外键动态ID,与动态的主键ID。数据格式如下:

动态数据

"rows":[
  {
     "id":1,
     "content":"dynamicsContent"
  },
   {
     "id":2,
     "content":"dynamicsContent"
  },
   {
     "id":3,
     "content":"dynamicsContent"
  }
]

评论数据

"rows":[
  {
    "id":1,
    "dynamicId":1,
    "content":"commentsContent",
    "userId":1
  },
  {
    "id":2,
    "dynamicId":1,
    "content":"commentsContent",
    "userId":12
  },
  {
    "id":3,
    "dynamicId":2,
    "content":"commentsContent",
    "userId":13
  },
  {
    "id":4,
    "dynamicId":3,
    "content":"commentsContent",
    "userId":11
  },
  {
    "id":5,
    "dynamicId":3,
    "content":"commentsContent",
    "userId":14
  },
  {
    "id":6,
    "dynamicId":3,
    "content":"commentsContent",
    "userId":8
  }
]

需要的封装结果

"rows":[
  {
     "id":1,
     "content":"dynamicsContent",
     "comments":[
	       {
	       "id":1,
		    "dynamicId":1,
		    "content":"commentsContent",
		    "userId":1
	       },
	       {
	       "id":2,
		    "dynamicId":1,
		    "content":"commentsContent",
		    "userId":12
	       }
	]
  },
   {
     "id":2,
     "content":"dynamicsContent",
      "comments":[
	       {
	       "id":3,
		    "dynamicId":2,
		    "content":"commentsContent",
		    "userId":13
	       }
	]
  },
   {
     "id":3,
     "content":"dynamicsContent",
     "comments":[
			 {
			    "id":4,
			    "dynamicId":3,
			    "content":"commentsContent",
			    "userId":11
			  },
			  {
			    "id":5,
			    "dynamicId":3,
			    "content":"commentsContent",
			    "userId":14
			  },
			  {
			    "id":6,
			    "dynamicId":3,
			    "content":"commentsContent",
			    "userId":8
			  }
		]
  }
]

解决方法

方法一:

先分别获取动态数据和评论数据,在利用js数组方法封装。

/*
* 这里只为了说明需求,我借用j
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值