如何解决如何将两个数组与每个数组中的数据组合成多个对象?
我正在尝试将两个长度为 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 举报,一经查实,本站将立刻删除。