Saturday 15 February 2014

JavaScript: Concatenate 3D array into 2D array, wrapping values in html tags -



JavaScript: Concatenate 3D array into 2D array, wrapping values in html tags -

3d array

// array var x = { "letter": [ "a", "b", "c", "d", "e", "f", "g", "h", "i" ], "line": [ { "data": [ 306, 830, 377, 651, 547, 369, 300, 148, 494 ] }, { "data": [ 88, 339, 298, 87, 96, 108, 93, 182, 64 ] }, { "data": [ 3157, 2943, 2724, 2116, 3700, 2980, 2449, 2494, 1057 ] }, { "data": [ 2006, 1921, 2030, 615, 273, 415, 680, 286, 730 ] } ] };

some variables

// variables var line = x.line; var info = []; (var = 0; < line.length; i++) { data.push(line[i].data); }

the actual code in question

// existing code (only works on fixed number of array objects, want work on number of objects) var listdata = []; (var = 0; < line.length; i++) { listdata.push(''); } (var = 0; < data[0].length; i++) { listdata[0] += '<li>' + data[0][i] + '</li>'; listdata[1] += '<li>' + data[1][i] + '</li>'; listdata[2] += '<li>' + data[2][i] + '</li>'; listdata[3] += '<li>' + data[3][i] + '</li>'; } // perhaps this? got stuck... var listdata = []; (var = 0; < line.length; i++) { listdata.push(''); listdata[i] += '<li>' + data[i][/* ??? */] + '</li>'; }

i want simplify line[data] objects 1 array, wrapping each of data objects' values in html <li> tag, concatenating them 1 string per object. listdata looks below:

desired result

listdata == [ "<li>306</li><li>830</li><li>377</li><li>651</li><li>547</li><li>369</li><li>300</li><li>148</li><li>494</li>", "<li>88</li><li>339</li><li>298</li><li>87</li><li>96</li><li>108</li><li>93</li><li>182</li><li>64</li>", "<li>3157</li><li>2943</li><li>2724</li><li>2116</li><li>3700</li><li>2980</li><li>2449</li><li>2494</li><li>1057</li>", "<li>2006</li><li>1921</li><li>2030</li><li>615</li><li>273</li><li>415</li><li>680</li><li>286</li><li>730</li>" ]

but want in way work not 4 info objects, number of them in x.

you can see did 4 objects there, can't figure out how programmatically. if can please utilize existing variables, i'd appreciative! thanks.

you can utilize map. first info multidimensional array, create li each number:

var listdata = x.line .map(function(obj){return obj.data}) .map(function(ns){return '<li>'+ ns.join('</li><li>') +'</li>'})

this work number of info objects, containing array of number of items.

javascript arrays multidimensional-array

No comments:

Post a Comment