JS:如何将来自两个不同数组的对象合并为一个数组/对象

时间:2019-12-04 19:46:53

标签: javascript arrays vuejs2 array-push array-reduce

如果我需要将两个数组(内容和ID)合并到一个数组中(合并)。

第一个数组:

let content = [
  { "Name": "Max Mustermann" },
  { "Name": "Berta Beispiel" },
  { "Name": "Zacharias Zufall" }
]

第二个数组:

let ids = [
  "12345678-1", 
  "12345678-2", 
  "12345678-3"
]

应该结合起来的样子:

let combined = [
  {
    "Name": "Max Mustermann",
    "id": "12345678-1"
  },
    {
    "Name": "Berta Beispiel",
    "id": "12345678-2"
  },
    {
    "Name": "Zacharias Zufall",
    "id": "12345678-3"
  }
]

我尝试了与push,reduce,map等不同的方法,但是没有任何效果::(

2 个答案:

答案 0 :(得分:3)

它应该起作用:

let content = [
  { "Name": "Max Mustermann" },
  { "Name": "Berta Beispiel" },
  { "Name": "Zacharias Zufall" }
]
let ids = [
  "12345678-1", 
  "12345678-2", 
  "12345678-3"
]
let combined = content.map((cnt, index) => {
  let idPart = {
    id: ids[index],
  };
  return {...cnt, ...idPart};
});
// Short version:
/*
let combined = content.map((c, i) => ({id: ids[i], ...c}));
*/

答案 1 :(得分:2)

根据您的需求,可以像这样简单地进行操作。注意:它将修改原始的content数组。

let content = [
  { "Name": "Max Mustermann" },
  { "Name": "Berta Beispiel" },
  { "Name": "Zacharias Zufall" }
]

let ids = [
  "12345678-1", 
  "12345678-2", 
  "12345678-3"
];

for(let i=0;i<content.length;i++) {
  content[i].id = ids[i] || null;
}

console.log(content);

如果您需要从两者创建新对象+新数组,则可以使用

const content = [
  { "Name": "Max Mustermann" },
  { "Name": "Berta Beispiel" },
  { "Name": "Zacharias Zufall" }
]

const ids = [
  "12345678-1", 
  "12345678-2", 
  "12345678-3"
];

const merged = content.map((c, index) => ({id: ids[index] || null, ...c}));
console.log(merged);

这确实取决于您和情况的具体情况。

编辑

如果我没有在Javascript中提到letconst之间关于数组或对象的区别有点混乱,我会觉得自己没有履行职责。 / p>

以下是带有const声明的完全有效的JS:

const items = [];
items.push(1,2,3);
console.log(items); // 1, 2, 3

这是因为const指的是一些更复杂的信息,您可以在对语言本身有了更多了解后才能查找它们。但是,将来,在确定是否应使用constlet时,您需要问自己的基本事情是:

  

我是否需要在某个时候完全重新分配变量?例如

arr = [1,2,3]; 
/// code later on;
arr = [5,6,7];

如果是,请使用let。但是,如果您的代码看起来更像

arr = [1,2,3];
// other stuff
arr.push(4,5,6);
arr.pop();
arr.sort((a,b) => a-b);

那么您可能可以使用const

我知道这不是最好的说明,但是由于我不了解您的编程知识水平,因此深入讨论可能会引起更多的混乱。