【问题标题】:Field value from first Array to get the values from the Second Array in Javascript来自第一个数组的字段值以从 Javascript 中的第二个数组中获取值
【发布时间】:2022-01-09 18:15:15
【问题描述】:

我有两个数组,arr1 有字段,我只需要从中获取字段值。应该使用 arr2 检查字段值,如果它与键的名称匹配,则需要创建如下输出:

let arr1 = [{
      field: "name",
      value: "some1",
      value1: "some2"
    },{
      field: "job",
      value: "some1",
      value1: "some2"
    },{
      field: "from",
      value: "some1",
      value1: "some3"
    }
    ];
    
    let arr2 = [{
      name: "John",
      job: "engineer",
      address: "abc",
      from: "boston",
      gender: "male"
    },{
      name: "Steph",
      job: "worker",
      address: "uhuh",
      from: "uk",
      gender: "male"
    },{
      name: "dor",
      job: "farmer",
      address: "gdgs",
      from: "us",
      gender: "female"
    }
    ];

需要的输出:

[{
  name: "John",
  job: "engineer",
  from: "boston"
},{
  name: "Steph",
  job: "worker",
  from: "uk"
},{
  name: "Ram",
  job: "farmer",
  from: "us"
}
];

我试过这样做,但我只得到了 arr2 中的最后一个值。

for(let index = 0; index < arr2.length; index++){
  for(let newi = 0; newi < arr1.length; newi++){
    newObj = arr1[newi].field;
    final[newObj] = arr2[index][newObj]
    last.push(final[newObj])
   
  }
  console.log(last)
}

【问题讨论】:

    标签: javascript arrays ecmascript-6


    【解决方案1】:

    使用mapObject.assign

    const arr1 = [{  field: "name",  value: "some1",  value1: "some2"},{  field: "job",  value: "some1",  value1: "some2"},{  field: "from",  value: "some1",  value1: "some3"}];
    const arr2 = [{  name: "John",  job: "engineer",  address: "abc",  from: "boston",  gender: "male"},{  name: "Steph",  job: "worker",  address: "uhuh",  from: "uk",  gender: "male"},{  name: "dor",  job: "farmer",  address: "gdgs",  from: "us",  gender: "female"}];
    
    
    const fields = arr1.map(({ field }) => field);
    const output = arr2.map((item) =>
      Object.assign({}, ...fields.map((field) => ({ [field]: item[field] })))
    );
    
    
    console.log(output)

    【讨论】:

      【解决方案2】:

      这样做,使用Array.map & Array.reduce

      const arr1 = [{  field: "name",  value: "some1",  value1: "some2"},{  field: "job",  value: "some1",  value1: "some2"},{  field: "from",  value: "some1",  value1: "some3"}];
      const arr2 = [{  name: "John",  job: "engineer",  address: "abc",  from: "boston",  gender: "male"},{  name: "Steph",  job: "worker",  address: "uhuh",  from: "uk",  gender: "male"},{  name: "dor",  job: "farmer",  address: "gdgs",  from: "us",  gender: "female"}];
      
      const result = arr2.map(item => arr1.reduce((acc, {field}) => {
        acc[field] = item[field];
        return acc;
      }, {}));
      
      console.log(result);

      【讨论】:

      • 感谢您的工作
      猜你喜欢
      • 1970-01-01
      • 2022-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2016-08-25
      • 2019-03-01
      相关资源
      最近更新 更多