首页 > 解决方案 > 如何将两个数组与每个数组中的数据组合成多个对象?

问题描述

我正在尝试将两个长度数组解析nn具有与数组相同数量的键值对的对象。每个对象都应该有一个与对象位置相关的动态名称键。

例如,如果每个数组中有 10 个项目,则应该有 10 个对象,并且每个对象应该有一个 name 键,它是顺序的 -->Day[n]

输入将如下所示:

// input
const temperatures: [65, 33]
const rain: [3, 8]

输出形状应如下所示:

// output
[
  {
    name: 'Day1',
    temperature: 65,
    rain: 3
  },
  {
    name: 'Day2',
    temperature: 33,
    rain: 8
  },
]

我尝试通过每个数组进行映射并为每个数组项创建一个对象,然后将它们组合成一个对象数组,但出于某种原因,结果数组仅包含一组数组名称。

到目前为止,这是我的代码:

const temperature = [65, 33];
const rain = [3, 8];
const days = { name: 'Day1' };

const data1 = temperature.map((val) => {
  return { temperature: val };
});

const data2 = rain.map((val) => {
  return { rain: val };
});

const total = { ...days, ...data1, ...data2 };

console.log(total);

// output: { '0': { temperature: 65 }, '1': { temperature: 33 }, name: 'Day1' }

注意:我正在创建输入数组,所以如果我需要添加或更改任何数据,这是可能的。

标签: javascriptalgorithmsortingdata-structuresmerge

解决方案


const temperature = [65, 33];
const rain = [3, 8]; 
const length = Math.max(temperature.length, rain.length);

const output = [];

for(let i = 0; i < length; i++) {
  output.push({rain:rain[i], temperature:temperature[i], name:`Day${i+1}`});
}

推荐阅读