我试图从收到的具有动态键和值的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);