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

JS: How to combine Object from two different arrays into one Array/Object

如果有两个数组(内容和 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 等不同的方法......但没有任何效果::(

它应该有效:

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}));
*/

根据您的需要,像这样简单的方法也可以。注意:它修改了原来的 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 之间在引用数组或对象方面的区别,我会觉得我没有履行职责有点懵

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

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

这是因为 const 指的是一些更复杂的信息,您可以在了解更多语言本身时查找这些信息。然而,在未来,当你决定是否应该使用 constlet 时,你需要问自己的基本问题是:

Will I need to totally reassign the variable at some point? e.g.

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

我知道这不是最好的说明,但更深入地讨论它可能会引起更多混淆,因为我不知道您的编程知识水平。