问题:
let arr1 = [{
min: 10, max: 20
},
{
min: 20, max: 40
},
{
min: 20, max: 40
}
];
let jsonVal = { id: 12345, v1: 5, v2: 10, v3: 9 }
输出:
let output = [{
min: 10, max: 20, v1: 5
},
{
min: 20, max: 40, v2: 10
},
{
min: 20, max: 40, v3: 9
}
];
jsonVal可以在arr1的基础上增加。如果arr1的长度为4,则会有v1、v2、v3、v4。此外,没有可匹配的id字段。如何获得此解决方案?
我能想到的是:
let arr1 = [{
min: 10,
max: 20
},
{
min: 20,
max: 40
},
{
min: 20,
max: 40
}
];
let jsonVal = {
v1: 5,
v2: 10,
v3: 9
}
console.log(arr1.map(function (a, i) {
return {...a, ["v" + (i + 1)]: jsonVal["v" + (i + 1)]}
}));
只有当jsonVal
具有所有可用索引时,此操作才有效。
试试这个。
注意,这个解决方案依赖于jsonVal拥有与数组相同数量的键,反之亦然。两者必须具有相同的长度。
let arr1 = [
{
min: 10,
max: 20
},
{
min: 20,
max: 40
},
{
min: 20,
max: 40
}
];
let jsonVal = { v1: 5, v2: 10, v3: 9 };
let jsonKeys = Object.keys(jsonVal);
const arr = arr1.map((value, idx) => {
const currKey = jsonKeys[idx];
const currVal = jsonVal[currKey];
return {
...value,
[currKey]: currVal
};
});
console.log(arr);
let arr1 = [{min:10,max:20},{min:20,max:40},{min:20,max:40}];
let jsonVal = {
v1: 5,
v2: 10,
v3: 9
};
const result = arr1.map((item, i) => {
const [key, val] = Object.entries(jsonVal)[i]
return {
...item,
[key]: val
};
})
console.log(result);