[英]Complex transformation of an array of objects into another array
我有一個對象數組,每個 object 是一個帶有名稱和問題數組的字段,我怎樣才能將這個結構帶入一個對象數組,其中 object 將是問題,如果已經問過這樣的問題,不應重復。
let object = [
{name: 'first', questions: [
{name: 'question1', answer: {name: 'answer1'}},
{name: 'question2', answer: {name: 'answer2'}}
]},
{name: 'second', questions: [
{name: 'question3', answer: {name: 'answer3'}},
{name: 'question1', answer: {name: 'answer1'}}
]}
]
//exprected =>
let result = [
{qeustion: 'qeustion1', answer: {name: 'answer1'}},
{qeustion: 'qeustion2', answer: {name: 'answer2'}},
{name: 'question3', answer: {name: 'answer3'}}
]
我堅持以下轉換,我嘗試用 reduce 來做,但沒有任何效果
首先,使用reduce
是一種很好的方法,但reduce
不會給你想要的最終結果。
您還需要遍歷問題數組並檢查當前問題是否已添加到結果數組中(您沒有提到如何檢查問題是否重復,所以假設應該檢查問題的名稱)。 如果問題不是重復的,則將其推送到結果數組。
這是一個演示:
let object = [ { name: "first", questions: [ { name: "question1", answer: { name: "answer1" } }, { name: "question2", answer: { name: "answer2" } } ] }, { name: "second", questions: [ { name: "question3", answer: { name: "answer3" } }, { name: "question1", answer: { name: "answer1" } } ] } ]; let transform = arr => arr.reduce((a, c) => { c.questions.forEach( q => 0 > a.findIndex(el => el.question == q.name) && a.push({ question: q.name, answer: q.answer }) ); return a; }, []); console.log(transform(object));
希望對您有所幫助,如果您仍然需要任何進一步的幫助,請隨時詢問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.