2个json数据,如何把相同的数组合并成一个数组?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2个json数据,如何把相同的数组合并成一个数组?相关的知识,希望对你有一定的参考价值。

A=[

"id": 1,
"name": "",
"sex": "",
"age": ""
,
....
]
B=[

"id": 1,
"adds": "",
"score": "",
"state": 0
,
....
]
如上代码,我想要的数组
C=[

"id": 1,
"name": "",
"sex": "",
"age": "",
"adds": "",
"score": "",
"state": 0
,
....
]
该怎么办?

var C = [];
var temp1,temp2;
//确保数据多的数组在最外层循环,防止丢失数据
if(A.length>=B.length)
temp1=A;
temp2=B;
else
temp1=B;
temp2=A;


for(var i=0;i<temp1.length;i++)
if(temp2.length<=0)
 C.push(temp1[i]);
else
for(var j=0;j<temp2.length;j++)
        if(temp1[i].id==temp2[j].id)
            var temp=Object.assign(,temp1[i],temp2[j]);//合并对象
            C.push(temp);//放入数组
            temp2.splice(j,1);//删除本次合并的对象,增加性能
            break;
        
    


console.log(C);

参考技术A var c = a.concat(b),//合并成一个数组 temp = ,//用于id判断重复 result = [];//最后的新数组 //遍历c数组,将每个item.id在temp中是否存在值做判断,如不存在则对应的item赋值给新数组,并将temp中item.id对应的key赋值,下次对相同值做判断时便不会走此分支,达到判断重复值的目的; c.map((item,index)=> if(!temp[item.id]) result.push(item); temp[item.id] = true ) console.log(result)追问

好像不行哎,temp把重复id的过滤掉了,没有追加进去

参考技术B 数量少的话可以这样写代码搞定,大量这种需求,可以先把json写mogoDB,A和B各一张表,再把两个表以ID为主键union即可。

C练习两个已经从小到大的数组合并成为一个从小到大排序的数组

两个已经从小到大的数组合并成为一个从小到大排序的数组

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int m,n,i,j,k,tem=0;
 5     printf("这两个数组分别有多少个数:\n");
 6     scanf("%d%d",&m,&n);
 7     int a[m],b[n],c[m+n];
 8     printf("从小到大输入%d个数:\n",m);
 9     for(i=0;i<m;i++)
10         scanf("%d",&a[i]);
11     printf("从小到大输入%d个数:\n",n);
12     for(i=0;i<n;i++)
13         scanf("%d",&b[i]);
14     i=0;j=0;k=0;
15     do
16     {
17         if(a[i]==b[j])
18         {
19             c[k]=a[i];
20             k++;
21             c[k]=b[j];
22             k++;i++;j++;
23         }
24         else if (a[i]>b[j])
25         {
26             c[k]=b[j];
27             j++;k++;
28         }
29         else
30         {
31             c[k]=a[i];
32             i++;
33             k++;
34         }
35     }
36     while((i!=m)&&(j!=n));
37     if(i==m)
38         for(;j<n;j++,k++)
39             c[k]=b[j];
40     if(j==n)
41         for(;i<m;i++,k++)
42             c[k]=a[i];
43     printf("结果是:\n");
44     for (;tem<m+n;tem++)
45         printf("%d ",c[tem]);
46     printf("\n");
47     return 0;
48 }
49 测试运行:
50 [email protected]:~/桌面$ ./2
51 这两个数组分别有多少个数:
52 6 4
53 从小到大输入6个数:
54 6 9 11 13 13 13    
55 从小到大输入4个数:
56 1 13 13 19
57 结果是:
58 1 6 9 11 13 13 13 13 13 19 
59 [email protected]:~/桌面$ 

 

以上是关于2个json数据,如何把相同的数组合并成一个数组?的主要内容,如果未能解决你的问题,请参考以下文章

php当中,如何将数组合并成变量呢?

美团一面:如何高效地将两个有序的数组合并成一个有序数组

如何把2个数组合并为一个数组

Java中如何把两个数组合并为一个

合并排序,将两个已经排序的数组合并成一个数组

C练习两个已经从小到大的数组合并成为一个从小到大排序的数组