javascript从两级数组中提取id以获取新对象中的键值对

标签 javascript arrays javascript-objects

我收到了一个有效负载,我需要从有效负载内的两个不同级别提取 ID,并将其作为键值对的单个对象返回。我试图进行某种组合或 ForEach()reduce() 但我似乎找不到正确的方法。这是数据的样子。

{
 orderId:999,
 menuId: 123456,
  questions:[{
    questionId: 123,
    depth: 1,
        answers: [
            { answerId: 999, text: "foo1" },
            { answerId: 888, text: "foo2" }]
  },
  {
    questionId: 654,
    depth: 1,
    answers: [{ answerId: 777, text: "bar" }]
  }]
}

我想要得到什么结果

{"q_123": ["999", "888"], "q_654": "777"}

最佳答案

以下使用reduce的方法可以完成这项工作:

const data = {
  orderId: 999,
  menuId: 123456,
  questions: [{
      questionId: 123,
      depth: 1,
      answers: [{
          answerId: 999, 
          text: "foo1"
        }, {
          answerId: 888,
          text: "foo2"
        }
      ]
    }, {
      questionId: 654,
      depth: 1,
      answers: [{
        answerId: 777,
        text: "bar"
      }]
    }
  ]};

const result = data.questions.reduce((all, {
  questionId: id,
  answers
}) => {

  all[`q_${id}`] = answers.map(a => a.answerId);

  return all;
}, {});
console.log(result);

关于javascript从两级数组中提取id以获取新对象中的键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51071302/

相关文章:

javascript - 将类附加到用户输入的正确方法

如果按下 control + s,Javascript 将执行功能

c# - 文件流.读取(...): Will I ever get a nibble rather than byte?

php - 如何通过 MySQL 表将 Python 列表转换为 PHP 数组

javascript - 在单独的对象中查找匹配值

javascript - Backbone.js - 如何在模板中使用自定义模型属性?

javascript - 如何使用 jQuery 检查切换隐藏状态

java - 在 Java 中将像素数组转换为图像时数组索引超出范围

javascript - 带有 reviver 函数的 JSON.parse 返回未定义

javascript - 如何使一个javascript函数的一个变量的值在任何其他函数中可用?