微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将两个数组与每个数组中的数据组合成多个对象?

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

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

例如,如果每个数组中有 10 个项目,则应该有 10 个对象,并且每个对象都应该有一个名称键,并且是连续的 --> 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' }

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

解决方法

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;}

,

假设输入数组的大小相同,一种可能的方法如下:

const result = temperature.map((temp,index) => {
    return { name: `Day${index+1}`,temperature: temp,rain: rain[index] };
};

虽然我个人认为这不是最干净或最清晰的方式,但可能值得考虑更改输入类型。

,

创建一个接受温度和降雨作为参数并返回最终结果的函数。这里我们假设温度数组和降雨数组的长度相同。

const temperature = [65,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() 函数。

我假设数组 steps: - task: AzureCLI@2 displayName: 'Azure CLI ' inputs: azureSubscription: kevin0322 scriptType: ps addSpnToEnvironment: true scriptLocation: inlineScript inlineScript: | echo "##vso[task.setvariable variable=ARM_CLIENT_ID]$env:servicePrincipalId" echo "##vso[task.setvariable variable=ARM_CLIENT_SECRET]$env:servicePrincipalKey" echo "##vso[task.setvariable variable=ARM_TENANT_ID]$env:tenantId" - powershell: | az login --service-principal --username $(ARM_CLIENT_ID) --password $(ARM_CLIENT_SECRET) --tenant $(ARM_TENANT_ID) $aadToken = az account get-access-token --resource-type aad-graph | ConvertFrom-Json Install-Module -Name AzureAD -Scope CurrentUser -Force Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force Connect-AzureAD -AccountId $(ARM_CLIENT_ID) -TenantId $(ARM_TENANT_ID) -AadAccessToken $aadToken.accessToken Get-AzureADGroupMember -ObjectId "xxx" displayName: 'PowerShell Script' temperature 总是具有相同数量的元素。也就是说,如果 rain 数组有 3 天的温度数据,那么即使 temperature 数组也应该有 3 天

的降雨数据>

通过上述假设, 我们可以遍历 rain 数组的元素,并将每天的单个对象插入到一个新的和最终的数组中,这是您预期的输出。

我们将使用 temperature 函数来实现目标:

every()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。