动态创建具有动态键值的对象数组



我试图从收到的具有动态键和值的const val的示例响应中创建对象数组。我遵循这一点,这有助于我与动态键列;但是我无法动态地将值分配给键。

const key是动态的,并且value .dims将始终包含与key中的值数量完全相同的对象数量。如果key有3个候选人;Val将包含3个对象

如果可能的话,我不希望通过硬编码来实现。

const val = {
"dims": [{
"flOne": {},
"values": [
100,
99,
98,
97,
96              
]
},
{
"flOne": {},
"values": [
1,
2,
3,
4,
5
]
}
]
};

const keys = ['a', 'b'];
const lenOne = keys.length;
const base = val.dims[0].values;
const lenTwo = base.length;
console.log(lenOne, lenTwo);
const data = [];
let obj = {};
for (let i = 0; i < lenTwo; i++) {
const vals = base
keys.forEach(
(a, j) => {
obj[a] = vals[i];
return obj;
}
)
data.push(obj);
}
console.log(data);

我想要这个[{ a: 1, b:100 }, { a: 2, b: 99 }, { a: 3, b: 98 }, { a: 4, b: 97 }, { a: 5, b: 96 }]

有很多方法可以实现这一点,使用reduce是我想到的:

const val = {
"dims": [{
"flOne": {},
"values": [
100,
99,
98,
97,
96
]
},
{
"flOne": {},
"values": [
1,
2,
3,
4,
5
]
}
]
};

const keys = ['a', 'b'];
const base = val.dims[0].values;
const data = base.map((_, idx) => (
keys.reduce((acc, curr, i) => ({
...acc,
[curr]: val.dims[i].values[idx]
}), {})
))
console.log(data)

可以使用map和for循环来实现

const val = {
"dims": [{
"flOne": {},
"values": [
100,
99,
98,
97,
96              
]
},
{
"flOne": {},
"values": [
1,
2,
3,
4,
5
]
}
]
};

const keys = ['a', 'b'];
const result = [];
for(let i=0; i < keys.length; i ++){
val.dims[i].values.map((item, index) => {
if(result[index]){
result[index][keys[i]] = item
}
else {
result[index] = {
[keys[i]]: item
}
}
})
}
console.log(result);

相关内容

  • 没有找到相关文章