0

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

4

2 回答 2

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}));
*/
于 2019-12-04T19:53:08.060 回答
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引用之间的区别有点混乱,我会觉得我没有尽我的职责。

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

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

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

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

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.

我知道这不是最好的澄清,但更深入地谈论它可能会导致更多的混乱,因为我不知道你的编程知识水平。

于 2019-12-04T20:01:25.760 回答