2017-11-08 11 views
1

タイトルはそれよりも複雑に聞こえるかもしれません。2つのオブジェクトのリストをオブジェクトの1つのリストにマージする方法

2つの異なるマップで作成された2つの配列があります。私は最終的に得るために見てる何

[0:{answer: "generic answer"} 
1:{answer:...} 
2:{...}] 

[0:{question: "generic question"} 
1:{question:...} 
2:{...}] 

と:私の結果を与える

let temp = []; 
    let temp2 = []; 

    nameArray.forEach(function(x){ 
     temp.push({question: x[0]}) 
    }) 
    bodyArray.forEach(function(x){ 
     temp2.push({answer: x[0]}) 
    }) 

:私はそのようになどの各配列をループに進みますオブジェクトの単一のリストであり、オブジェクトを2つの配列のオブジェクトにしますが、次のようにマージします。

[0:{question: "generic question", answer: "generic answer"}] 

答えて

1

array#mapを使用して質問配列を反復し、question配列のインデックスを使用すると、answer配列から要素を追加し、質問と回答の両方でオブジェクトの配列を生成できます。

const questions = ["generic question", "generic question 12", "generic question 34"], 
 
     answers = ["generic answer", "generic answer 12", "generic answer 34"]; 
 

 
const merged = questions.map((question, i) => ({question, 'answer' : answers[i]})); 
 
console.log(merged);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+1

これは働いていた、ありがとう! – StackBeginnerThanks

0

あなたはquestionsのそれぞれの上にそれぞれを反復して.forEach()を使用してそれらをマージすることができます

出力
let questions = [ 
{question: "Question?"}, 
{question: "Question 2"}, 
]; 

let answers = [ 
{answer: "Yes"}, 
{answer: "no"} 
]; 

questions.forEach((question, i) => question["answer"] = Object.values(answers[i])[0]); 

:あなたは、任意のを取ることができる

[ 0: {question: "Question?", answer: "Yes"}, 
1: {question: "Question 2", answer: "no"} ] 
+0

も働いて、ありがとう! – StackBeginnerThanks

0

propeのカウント新しいオブジェクトを構築することができます。

var questions = ['question1', 'question2', 'question3'], 
 
    answers = ['answer1', 'answer2', 'answer3'], 
 
    keys = ['question', 'answer'], 
 
    result = [questions, answers].reduce(function (r, a, i) { 
 
     a.forEach(function (v, j) { 
 
      r[j] = r[j] || {}; 
 
      r[j][keys[i]] = v; 
 
     }); 
 
     return r; 
 
    }, []); 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

関連する問題