在数组内映射 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" }]

我该怎么做?

你可以reducea数组

指向你想要的对象
  1. 迭代每个条目并提取 nameheader 属性
  2. 使用 header 作为对象键
  3. 使用 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)