我需要这个阵列解决方案,有什么方法可以做到这一点吗



问题:

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

相关内容

最新更新