Javascript:将一个数组中的值映射到多维数组中的键

标签 javascript

我对 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/

相关文章:

javascript - 为什么下面的 javascript 函数不起作用?

javascript - 在包中运行 Javascript 和 Servlet 代码

javascript - 构建此对象的最佳函数式语法?

javascript - 我需要从服务器发送日期数据,然后使用 Google Charts 中使用的 google.visualization.datatable 中的日期过滤元素

javascript - AngularJS 是否将变量保存到文件中?

javascript - Backbone 模型应该是 View 模型、领域模型还是两者兼而有之?

ajax - AngularJS 使用 $http.get 请求以特定顺序传递参数数据

javascript - HighCharts:在工具提示上显示所有 y 轴

相当于 LinqPad 的 Javascript

javascript - 如何让 JavaScript 显示动画 GIF 几秒钟,然后显示图像?