美文网首页
2个json对象里面id相同,拼接成一个json

2个json对象里面id相同,拼接成一个json

作者: 我是syq吖 | 来源:发表于2023-08-09 10:28 被阅读0次
 let obj1 = [
    {id:1,name:'a1'},
    {id:2,name:'a2'},
    {id:3,name:'a3'},
    {id:4,name:'a4'},
    {id:5,name:'a6'},
    {id:6,name:'a1'},
    {id:7,name:'a2'},
    {id:8,name:'a3'},
    {id:9,name:'a4'}
  ];
  let obj2 = [
    {id:1,age:'1'},
    {id:4,age:'4'},
    {id:3,age:'3'},
    {id:2,age:'2'},
    {id:9,age:'9'},
    {id:8,age:'8'},
    {id:7,age:'7'},
    {id:6,age:'6'},
    {id:5,age:'5'}
  ]

之前的方法

  /**之前常用的方法*/
  let newObj = []
  obj1.forEach(item=>{
    obj2.forEach(list=>{
        if(item.id === list.id){
            newObj.push(Object.assgin(item,list))
        }
    })
})
console.log(newObj)
/*{id: 1, name: 'a1', age: '1'}
{id: 2, name: 'a2', age: '2'}
{id: 3, name: 'a3', age: '3'}
{id: 4, name: 'a4', age: '4'}
{id: 5, name: 'a6', age: '5'}
{id: 6, name: 'a1', age: '6'}
{id: 7, name: 'a2', age: '7'}
{id: 8, name: 'a3', age: '8'}
{id: 9, name: 'a4', age: '9'}*/ 

通过forEach循环便利判断id是否相等,相等就使用Object.assgin()方法拼接对象。虽然能实现效果,但是性能不好,9条数据就是81次循环,浪费性能。

解决方案

可以通过数据结构上,声明一个对象,先遍历obj1,属性为obj1每条数据的id值,值为obj1的每条数据存在新对象里。再遍历obj2,通过id获取新对象的属性直接拼接数据即可,这样减少循环次数变成 9+9而不是9*9了,代码如下

let newObj = {}, newArr = [];
obj1.forEach(item=>{
    newObj[item.id] = item
})
obj2.forEach(item=>{
    newArr.push(Object.assign(newObj[item.id],item))
})
console.log(newArr)

Object.assign() :ES6提供的操作对象的API,主要用于合并多个对象,
语法:Object,assign(obj1,obj2) ,返回新的对象,不修改原对象
如果obj1和obj2中有属性名相同,则obj2里的值会覆盖obj1里面的值(即后面的值会覆盖前面的值)
forEach() :foreach遍历接受三个参数
语法:arr.forEach((item,index,arr)=>{})
item:每一条数据(必传),index:下标,选传;arr:数组本身,选传;

注意:forEach()终止循环要用try catch

 try {
    let array = ["第一","第二","第三","第四"];
    array.forEach(item=>{
      if(item=='第三'){
        throw new Error('第三')
      }
      console.log(item)
    })
  } catch (error) {
    if(error.message!="第三") throw error;
  }

相关文章

  • json与python

    Python 对象编码成 JSON 字符串 json.dumps 用于将 Python 对象编码成 JSON 字符...

  • js将json格式的对象拼接成复杂的url参数方法

    js将json格式的对象拼接成复杂的url参数方法。 将URL截取转换成json 首先将字符串进行分割以“?”为界...

  • js {}=={} 返回false 并且 {}==={} 返回f

    对比两个json的结构是否完全相同,并没有想象那么简单,建议先去查查。而json结构相同,和json对象相同,不是...

  • json

    json.dumps 将 Python 对象编码成 JSON 字符串 json.loads 将已编码的 JSON ...

  • Json字符串和Json对象互相转化

    json是一种轻量级的数据交换格式 json对象可以理解成 json格式规范的对象,对于js来说,json对象和j...

  • 数组

    1.合并数组,其中一项相加(id相同) letres=[] letarr=JSON.parse(JSON.stri...

  • JSON.parse()和JSON.stringify()

    JSON.parse()用于从字符串中解析出json对象 json.stringify()用于把对象解析成字符串

  • 数组分类

    js对象数组(JSON) 根据某个共同字段 分组 希望的是将下面的对象数组: 根据相同id字段分组,转换成下面这种...

  • JSON

    JSON 对象 语法 json对象可以看成是java中的Map集合,里面装着一系列的键值对 json对象中可以包含...

  • python json模块

    json.dumps 将 Python 对象编码成 JSON 字符串 json.loads 将已编码的 JS...

网友评论

      本文标题:2个json对象里面id相同,拼接成一个json

      本文链接:https://www.haomeiwen.com/subject/qtiopdtx.html