Reputation: 373
I need to loop through an array, but the statement is located between brackets [ ]
It is however not allowed to place a for-statement between brackets and will therefore result in an SyntaxError: missing 'of' after for
searching the internet, I found out that array.map() could be a solution. I could however not find a example of an array.map on a multidimensional array, and can't get my code to work.
The example below creates a table and exports it into a pdf file. This works correctly, but works only for a static table:
var docDefinition = {
content: [
{
table: {
body: [
[ 'First', 'Second', 'Third', 'The last one' ],
[ 'Value 1', 'Value 2', 'Value 3', 'Value 4' ],
[ 'Val 1', 'Val 2', 'Val 3', 'Val 4' ]
]
}
}
]};
I need the code to work for a dynamic table. I'm trying to create a table from an array, can't get it to work properly. This is what I have so far:
function html2Pdf(){
var arr = [[ 'First', 'Second', 'Third', 'The last one' ],[ 'Value 1', 'Value 2', 'Value 3', 'Value 4' ],[ { text: 'Bold value', bold: true }, 'Val 2', 'Val 3', 'Val 4' ]];
var docDefinition = {
content: [
{
table: {
body: [
arr.map(function(item){
return item
})
]
}
}
]
};
pdfMake.createPdf(docDefinition).open();
}
Upvotes: 14
Views: 48652
Reputation: 5061
As commented before it's pretty okay to inject the given array into resulting structure directly.
table: { body: arr }
Regarding your question on how to use array map on two-dimensional arrays: you can nest it quite as you would do with for-loops or similar.
body: arr.map( function( row ) { return row.map( function( cell ) { return foo( cell ); } ); } )
Upvotes: 15