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 中提到 let
和 const
之间在引用数组或对象方面的区别,我会觉得我没有履行职责有点懵
以下是带有 const
声明的完全有效的 JS:
const items = [];
items.push(1,2,3);
console.log(items); // 1, 2, 3
这是因为 const
指的是一些更复杂的信息,您可以在了解更多语言本身时查找这些信息。然而,在未来,当你决定是否应该使用 const
或 let
时,你需要问自己的基本问题是:
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
。
我知道这不是最好的说明,但更深入地讨论它可能会引起更多混淆,因为我不知道您的编程知识水平。
如果有两个数组(内容和 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 中提到 let
和 const
之间在引用数组或对象方面的区别,我会觉得我没有履行职责有点懵
以下是带有 const
声明的完全有效的 JS:
const items = [];
items.push(1,2,3);
console.log(items); // 1, 2, 3
这是因为 const
指的是一些更复杂的信息,您可以在了解更多语言本身时查找这些信息。然而,在未来,当你决定是否应该使用 const
或 let
时,你需要问自己的基本问题是:
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
。
我知道这不是最好的说明,但更深入地讨论它可能会引起更多混淆,因为我不知道您的编程知识水平。