Reputation: 33
Below array is the input and expecting respective O/P. How to achieve it as a Key-Value pair using Typescript
let arr = [
{id: "1",
questions: [
{question: "HTML Tutorial" },
{question: "HTML References" }
],
answer : "Hypertext Markup Language is the standard markup language for documents designed to be displayed in a web browser. It can be assisted by technologies such as Cascading Style Sheets and scripting languages such as JavaScript and VBScript."
},
{id: "2",
questions: [
{question: "HTML Element Reference" },
{question: "HTML Reference - Browser Support" }
],
answer : "An HTML element is a type of HTML document component, one of several types of HTML nodes. HTML document is composed of a tree of simple HTML nodes, such as text nodes, and HTML elements, which add semantics and formatting to parts of document. Each element can have HTML attributes specified."
}
];
// Expected Output using Typescript
Array [{ Key: "1", value: "HTML Tutorial, HTML References: Hypertext Markup Language is the standard markup language for documents designed to be displayed in a web browser. It can be assisted by technologies such as Cascading Style Sheets and scripting languages such as JavaScript and VBScript." },
{ Key: "2", value: "HTML Element Reference,HTML Reference - Browser Support : An HTML element is a type of HTML document component, one of several types of HTML nodes. HTML document is composed of a tree of simple HTML nodes, such as text nodes, and HTML elements, which add semantics and formatting to parts of document. Each element can have HTML attributes specified." }]
Upvotes: 2
Views: 563
Reputation: 22320
Using map()
and Destructuring assignment
and also template literals
let arr =
[ { id: "1"
, questions: [ {question: "HTML Tutorial" }, {question: "HTML References" } ]
, answer : "Hypertext Markup Language is the standard markup language for documents designed to be displayed in a web browser. It can be assisted by technologies such as Cascading Style Sheets and scripting languages such as JavaScript and VBScript."
}
, { id: "2"
, questions: [ {question: "HTML Element Reference" }, {question: "HTML Reference - Browser Support" } ]
, answer : "An HTML element is a type of HTML document component, one of several types of HTML nodes. HTML document is composed of a tree of simple HTML nodes, such as text nodes, and HTML elements, which add semantics and formatting to parts of document. Each element can have HTML attributes specified."
}
]
let arr2 = arr.map(({id,questions,answer})=>
({ Key:id, value: `${questions.join(', ')} : ${answer}`}))
console.log( arr2 )
.as-console-wrapper { max-height: 100% !important; top: 0; }
Upvotes: 0
Reputation: 182
As already it has been answered, map()
is quite suitable for solving the problem.
interface Output {
key: string;
value: string;
}
const result: Output[] = arr.map((item) => {
const output = {
key: item.id,
value: `${item.questions.map(elem => elem.question).join(', ')}: ${item.answer}`
};
return output;
});
console.log(result)
Upvotes: 0
Reputation: 20039
Using map()
let arr = [{id:"1",questions:[{question:"HTML Tutorial"},{question:"HTML References"}],answer:"Hypertext Markup Language is the standard markup language for documents designed to be displayed in a web browser. It can be assisted by technologies such as Cascading Style Sheets and scripting languages such as JavaScript and VBScript."},{id:"2",questions:[{question:"HTML Element Reference"},{question:"HTML Reference - Browser Support"}],answer:"An HTML element is a type of HTML document component, one of several types of HTML nodes. HTML document is composed of a tree of simple HTML nodes, such as text nodes, and HTML elements, which add semantics and formatting to parts of document. Each element can have HTML attributes specified."}];
let res = arr.map(i => {
let q = i.questions.map(q => q.question).join(', ')
return { Key: i.id, value: q + ' : ' + i.answer }
});
console.log(res)
Upvotes: 2