[英]How to combine two arrays into multiple objects with data from each array?
我正在尝试将两个长度为n
的 arrays 解析为具有与 arrays 相同数量的键值对的n
对象。 每个 object 都应该有一个与对象的 position 相关的动态名称键。
例如,如果每个数组中有 10 个项目,则应该有 10 个对象,并且每个对象应该有一个 name 键,它是顺序的 --> Day[n]
输入将如下所示:
// input
const temperatures: [65, 33]
const rain: [3, 8]
output 形状应如下所示:
// output
[
{
name: 'Day1',
temperature: 65,
rain: 3
},
{
name: 'Day2',
temperature: 33,
rain: 8
},
]
我尝试通过每个数组进行映射并为每个数组项创建一个 object,然后将它们组合成一个对象数组,但出于某种原因,结果数组仅包含一组数组名称。
到目前为止,这是我的代码:
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' }
注意:我正在创建输入 arrays,所以如果我需要添加或更改任何数据,这是可能的。
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}`});
}
const temperatures = [ 65, 33 ], rain = [ 3, 8 ], output = temperatures.map((t,i) => ( { name: `day${i+1}`, temperature: t, rain: rain[i] })); console.log( output )
.as-console-wrapper {max-height: 100%;important:top;0;}
假设输入 arrays 的大小相同,一种可能的方法如下:
const result = temperature.map((temp, index) => {
return { name: `Day${index+1}`, temperature: temp, rain: rain[index] };
};
虽然我个人认为这不是最干净或最清晰的方法,但可能值得考虑更改输入类型。
创建一个 function,它接受温度和雨水作为参数并返回最终结果。 在这里,我们假设温度和降雨阵列的长度相同。
const temperature = [65, 33]; const rain = [3, 8]; function convertArray(temperature, rain) { const result = []; for (let i = 0; i < rain.length; i++) { const weather = { name: `Day${i + 1}`, temperature: temperature[i], rain: rain[i] } result.push(weather) } return result; } console.log(convertArray(temperature, rain));
您的用例不需要使用 map() function。
我假设,arrays temperature
和rain
总是具有相同数量的元素。 也就是说,如果temperature
数组有3 天的温度数据,那么即使是rain
数组也应该有3 天的降雨数据
通过上述假设,我们可以遍历temperature
数组的元素,并将每天的单个 object 插入一个新的最终数组,即您预期的 output。
我们将使用every()
function 来实现目标:
var finalArray = [];
temperature.every((element, index) => {
finalArray.push({
name: `Day ${index}`, //Use index+1 for Day 1 and not Day 0
temperature: element,
rain: rain[index]
});
});
console.log(finalArray); //The output
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.