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' ]
]
}
}
]};
JSFiddle
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();
}
JSFiddle
map() creates a new array from calling a function for every array element. map() calls a function once for each element in an array. map() does not execute the function for empty elements. map() does not change the original array.
C++ allows us a facility to create an array of maps. An array of maps is an array in which each element is a map on its own.
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 ); } ); } )
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With