首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在JavaScript中将多个jsons数组合并为一个数组交叉子数组?

如何在JavaScript中将多个jsons数组合并为一个数组交叉子数组?
EN

Stack Overflow用户
提问于 2018-09-29 03:24:45
回答 6查看 130关注 0票数 1

我有两个json数组:

代码语言:javascript
复制
 1) 
   [
    {
     "userId": 9
    },
    {
      "userId": 14
     }
    ]

 2) 
   [{"role": "1", "group": "3"}, {"role": "1", "group": "2"}] 

我想合并两个数组,如下所示:可以通过JavaScript获得解决方案吗?

代码语言:javascript
复制
[
 {"userId":9,"role":"1","group":"2"},
 {"userId":14,"role":"1","group":"2"}
 {"userId":9,"role":"1","group":"3"},
 {"userId":14,"role":"1","group":"3"}
] 

我试着使用let,但是我找不到操作开关子数组的方法:

代码语言:javascript
复制
let arr1 = [{"userId": 9}, {"userId": 14}];
let arr2 = [{"role": "1", "group": "3"}, {"role": "1", "group": "2"}];

let result = arr1.map(o => Object.assign(o, ...arr2));

console.log(result);
return result;

我使用前一个实现得到的结果如下所示:

代码语言:javascript
复制
[{"userId":9,"role":"1","group":"2"},{"userId":14,"role":"1","group":"2"}] 

然而,我希望得到如下结果:

代码语言:javascript
复制
[
 {"userId":9,"role":"1","group":"2"},
 {"userId":14,"role":"1","group":"2"}
 {"userId":9,"role":"1","group":"3"},
 {"userId":14,"role":"1","group":"3"}
]
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2018-09-29 03:38:59

您可以像这样对两个数组执行iterate操作,并将合并后的值推入result

代码语言:javascript
复制
arr1.forEach(e => {
  arr2.forEach(e2 => {
    result.push(Object.assign({}, e, e2));
  });
});

它也可以写成一行:

arr1.forEach(e => arr2.forEach(e2 => result.push(Object.assign({}, e, e2))));

代码语言:javascript
复制
const arr1 = [{
    "userId": 9
  },
  {
    "userId": 14
  }
];

const arr2 = [{
  "role": "1",
  "group": "3"
}, {
  "role": "1",
  "group": "2"
}];

const result = [];

arr1.forEach(e => {
  arr2.forEach(e2 => {
    result.push(Object.assign({}, e, e2));
  });
});

console.log(result);

票数 0
EN

Stack Overflow用户

发布于 2018-09-29 03:35:52

代码语言:javascript
复制
var a = [{
    "userId": 9
  },
  {
    "userId": 14
  }
]

var b = [{
  "role": "1",
  "group": "3"
}, {
  "role": "1",
  "group": "2"
}]

console.log(
  b.map(z=>a.map(x=>({...x, ...z}))).flat()
)

票数 4
EN

Stack Overflow用户

发布于 2018-09-29 03:39:19

使用for循环的另一种解决方案

代码语言:javascript
复制
let arr1 = [{ "userId": 9 }, { "userId": 14 }]
let arr2 = [{"role": "1","group": "3"}, {"role": "1","group": "2" }] 
let result = [];
for (let group of arr2) {
  for (let user of arr1) [
    result.push(Object.assign({}, group, user))
  ]
}
console.log(JSON.stringify(result))
//output is: 
// [
//  {"role":"1","group":"3","userId":9},
//  {"role":"1","group":"3","userId":14},
//  {"role":"1","group":"2","userId":9},
//  {"role":"1","group":"2","userId":14}
// ]

Stackblitz example

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52561554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档