在数组内映射 objects
mapping objects inside an array
我正在尝试用这两个 a 和 b 创建一个 object,第一个的 header 列对应于另一个 object 的键。
例如:
a =[{ name: 'CreatedDateTime', header: 'Tarih' },
{ name: 'Name', header: 'Adi' }]
b= [{ CreatedDateTime:"10.1.2021" },{Name:"Merve"}]
输出应该是这样的:
c=[{Tarih:"10.1.2021" , Adi:"Merve" }]
我该怎么做?
你可以reduce将a
数组
指向你想要的对象
- 迭代每个条目并提取
name
和 header
属性
- 使用
header
作为对象键
- 使用
b
中的匹配索引(如果存在)并提取 name
属性 作为值
const a = [{"name":"CreatedDateTime","header":"Tarih"},{"name":"Name","header":"Adi"}]
const b = [{"CreatedDateTime":"10.1.2021"},{"Name":"Merve"}]
const c = a.reduce((o, { header, name }, i) => ({
...o,
[ header ]: b[i]?.[name] // use optional-chaining in case it doesn't exist
}), {})
console.log(c)
这会生成一个对象。如果你真的需要它是一个单元素数组,就把它包装起来,即
const cArray = [ c ] // no idea why
Phil 已经提供了一个通用的解决方案,这里是一个非通用的解决方案,可能更容易理解基础知识:
var a = [{ name: 'CreatedDateTime', header: 'Tarih' },{ name: 'Name', header: 'Adi' }]
var b = [{ CreatedDateTime:"10.1.2021" },{Name:"Merve"}]
var c = {};
c[a[0].header] = b[0][a[0].name]
c[a[1].header] = b[1][a[1].name]
console.log("c: ", c)
我正在尝试用这两个 a 和 b 创建一个 object,第一个的 header 列对应于另一个 object 的键。 例如:
a =[{ name: 'CreatedDateTime', header: 'Tarih' },
{ name: 'Name', header: 'Adi' }]
b= [{ CreatedDateTime:"10.1.2021" },{Name:"Merve"}]
输出应该是这样的:
c=[{Tarih:"10.1.2021" , Adi:"Merve" }]
我该怎么做?
你可以reduce将a
数组
- 迭代每个条目并提取
name
和header
属性 - 使用
header
作为对象键 - 使用
b
中的匹配索引(如果存在)并提取name
属性 作为值
const a = [{"name":"CreatedDateTime","header":"Tarih"},{"name":"Name","header":"Adi"}]
const b = [{"CreatedDateTime":"10.1.2021"},{"Name":"Merve"}]
const c = a.reduce((o, { header, name }, i) => ({
...o,
[ header ]: b[i]?.[name] // use optional-chaining in case it doesn't exist
}), {})
console.log(c)
这会生成一个对象。如果你真的需要它是一个单元素数组,就把它包装起来,即
const cArray = [ c ] // no idea why
Phil 已经提供了一个通用的解决方案,这里是一个非通用的解决方案,可能更容易理解基础知识:
var a = [{ name: 'CreatedDateTime', header: 'Tarih' },{ name: 'Name', header: 'Adi' }]
var b = [{ CreatedDateTime:"10.1.2021" },{Name:"Merve"}]
var c = {};
c[a[0].header] = b[0][a[0].name]
c[a[1].header] = b[1][a[1].name]
console.log("c: ", c)