如何在JavaScript中将数组和对象中的数据组合起来并放到一个数组中?

pokxtpni  于 2023-01-08  发布在  Java
关注(0)|答案(1)|浏览(121)

我有一个数组,其中有一些字符串值,保存了id沿着所选答案,我还有一个不同的对象,其中有关于所选答案的详细信息,下面的数组在我们从问题中选择一个选项时保持更新。

arr = ["Q1A1", "Q2A3"]

假设Q1是问题1,A1是从问题中选择的选项。下面我有一个对应Q1的对象,其中包含答案的详细信息,当我们转到Q2时,该对象也会发生变化

{
id: "Q1",
answers: [
{
id: "Q1A1",
text: "Yes"
},
{
id: "Q1A2",
text: "No"
}  
]
}

同样,如果我们选择Q1中的答案,那么Q2中有任何其他对象,现在Q2中有不同的对象

{
id: "Q2",
answers: [
{
id: "Q2A1",
text: "Test 1"
},
{
id: "Q2A2",
text: "Test 2"
},
{
id: "Q2A3",
text: "Test 3"
},
{
id: "Q2A4",
text: "Test 4"
}    
]
}

我需要在数组的帮助下查找对象,数组包含问题和答案(例如“Q1A1”),如果你查看问题1的上述对象,我需要找到所选答案的文本,即(“是”)。因此,我需要像这样放入数组。

result = ["Q1_Yes","Q2_Test3"]
8yparm6h

8yparm6h1#

此代码将帮助您获得这些结果。

let selected = ["Q1A1", "Q2A3"];
let QA = [
  {
id: "Q1",
answers: [
{
id: "Q1A1",
text: "Yes"
},
{
id: "Q1A2",
text: "No"
}  
]
},
{
id: "Q2",
answers: [
{
id: "Q2A1",
text: "Test 1"
},
{
id: "Q2A2",
text: "Test 2"
},
{
id: "Q2A3",
text: "Test 3"
},
{
id: "Q2A4",
text: "Test 4"
}    
]
}
];
let all_answers = QA.reduce((allanswers,qa)=>(qa.answers.map(d=> allanswers[d.id]=[qa.id,d.text]),allanswers),{});

const result = selected.map(selected => all_answers[selected].join('_'))
console.log(result)

相关问题