我对 Javascript 比较陌生。 我正在为数据争论而苦苦挣扎。我想避免循环。
我需要保留“data_1”的更高层次的结构,但是插入一个对象来代替 {name: "Key n", length: < em>int}
对象具有以下结构:
const data_1 = {
Category1: ["Key A", "Key B", "Key C"],
Category2: ["Key D", "Key E", "Key F"],
Category3: ["Key G", "Key H"]
}
const data_2 = {
"Key A": 100,
"Key B": 200,
"Key C": 300,
"Key D": 400,
"Key E": 400,
"Key F": 300,
"Key G": 200,
"Key H": 100
}
目标结构应该是:
result = {
Category1: [{name:"Key A", length:100}, {name:"Key B", length:200}, {name: "Key C", length:300}],
Category2: [{name:"Key D", length:400}, {name:"Key E", length:400}, {name: "Key F", length:300}],
Category3: [{name:"Key G", length:200}, {name:"Key H", length:100}]
}
我怀疑解决这个问题的方法类似于以下伪代码。我正在努力将对象定义为 [name: key, length:data_2.key] 。
let results = Object.fromEntries(data_1.map(key => [name: key, length:data_2.key]));
感谢任何和所有的帮助:)
最佳答案
reduce 可以解决问题并且可读性也很好
const result = Object.entries(data_1).reduce((acc, [key, vals]) => {
acc[key] = vals.map(val => ({ name: val,length: data_2[val] }));
return acc;
}, {});
console.log(result);
<script>
const data_1 = {
Category1: ["Key A", "Key B", "Key C"],
Category2: ["Key D", "Key E", "Key F"],
Category3: ["Key G", "Key H"]
}
const data_2 = {
"Key A": 100,
"Key B": 200,
"Key C": 300,
"Key D": 400,
"Key E": 400,
"Key F": 300,
"Key G": 200,
"Key H": 100
}</script>
关于Javascript:将一个数组中的值映射到多维数组中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74213779/