从数组的字符串创建表,使每个字符串是它自己的列,每一行是字符串的一个字母
Create table from Array of Strings so that each string is its own column and each row is a letter of the string
我不知道问这个问题的正确方式,因为我已经搜索并试图实现不同的方法没有运气。Javascript不是我的强项,所以请耐心听我说。
我有一个输入,看起来像,每个条目可以有不同的宽度:
#abcde#fghij#klmno
我根据字符分割输入,最后得到一个数组,如下所示:
["abcde","fghij","klmno"]
我需要输出一个表,使第一列包含第一个字符串中的所有字母,每个字母在自己的行中,基本上最终得到一个表,看起来像:
a f k
b g l
c h m
d i n
e j o
到目前为止,我已经有效地分割了字符串,但是在创建表时遇到了麻烦。我在SO上尝试了多种不同的解决方案,没有运气。由于缺乏经验,我在处理每一步时都搞砸了。我在for循环的每个块中添加了我认为需要的注释,尽管我尝试的实现并不成功。
var table = document.createElement("table");
var tr = document.createElement("tr");
var td = document.createElement("td");
var th = document.createElement("th");
var checkbox = document.createElement("input");
checkbox.type("checkbox");
//split string
var splitStringArray = inputString.split("#");
for (var i = 0; i < splitStringArray; i++) {
//iterate through array and create a column for each string in the array
tr.appendChild(document.createElement(th));
//for each string, iterate through each character
var temp = splitStringArray[i].split("");
for (var j = 0; j < temp.length; j++) {
//add a row for each character in the string, each cell should have a checkbox and the letter associated with it
td.appendChild(document.createTextNode[i][j]);
td.appendChild(checkbox);
//This this the step that I'm running into issues with
}
}
tableArea.appendChild(table);
我遇到的一个问题是字符串的长度不相同,需要以与输入相同的顺序显示。
这使得很难创建一组行,然后逐行填充它们,而不是逐列填充它们。
首先,我们根据散列字符(#)分割输入字符串。接下来,对结果数组进行筛选,只返回非空字符串的元素。
从这里开始,使用第一个数组中每个字符串的长度创建另一个数组。我们将这个长度数组按降序排序,取第一个元素——它对应最长单词的长度——这将是我们需要的行数。列数来自于我们首先计算的数组的长度——即初始输入字符串中的单词数。
从这里开始,我们简单地遍历数据并创建table、tr和td元素。理想情况下,我们还应该创建一个tbody元素,并在其中放置tr元素,而不是在表中。
function newEl(tag){return document.createElement(tag)}
window.addEventListener('load', onDocLoaded, false);
function onDocLoaded(evt)
{
var tbl = testFunc('#abcde#fghij#klmno');
document.body.appendChild(tbl);
}
function testFunc(inputStr)
{
var wordArray = inputStr.split('#').filter(function(str){return str != '';});
var lengthArray = wordArray.map( function(str) {return str.length;} );
var numColumns = wordArray.length;
lengthArray.sort( function(a, b){return b-a} );
var maxRows = lengthArray[0];
var tbl = newEl('table');
var tbody = newEl('tbody');
tbl.appendChild(tbody);
for (var row=0; row<maxRows; row++)
{
var tr = newEl('tr');
for (var col=0; col<numColumns; col++)
{
var td = newEl('td');
td.textContent = wordArray[col][row];
tr.appendChild(td);
}
tbody.appendChild(tr);
}
return tbl;
}
看起来像这样:
//<![CDATA
var pre = onload, doc, bod, htm, C, E, weirdTable;
onload = function(){
if(pre)pre();
doc = document; bod = doc.body; htm = doc.documentElement;
C = function(e){
return doc.createElement(e);
}
E = function(id){
return doc.getElementById(id);
}
weirdTable = function(inputString, appendTo){
var a = inputString.split(/#/), t = C('table'), b = C('tbody');
for(var i=0,l=a.length; i<l; i++){
var r = C('tr'), s = a[i].split('');
for(var n=0,c,q=s.length; n<q; n++){
c = C('td'); c.innerHTML = s[n]; r.appendChild(c);
}
b.appendChild(r);
}
t.appendChild(b); appendTo.appendChild(t);
}
weirdTable(yourStringHere, E('yourIdHere'));
}
//]]>
相关文章:
- 将JSON转换为typescript中的字符串数组
- 在Javascript中将一个值和字符串数组转换为if语句
- 如何将正则表达式包含到字符串数组中
- JavaScript:将字符串数组转换为文本区域
- Knockout中的字符串数组
- 拆分字符串数组(JavaScript)后未定义
- 使用Javascript获取两个字符串之间的字符串数组
- 打印从Spring MVC Controller发送的字符串数组只显示“;toJSON”;在javascript中
- 将一个字符串数组解析为一个新的数组javascript
- AngularJS - 从字符串数组中连续更改文本
- 使用字符串数组中的字符填充 HTML 表
- 如何在 Javascript 中将字符串数组列表插入到表行中
- 创建二维字符串数组
- 如何从字符串数组中获取子字符串数组
- 如何将字符串数组转换为简单数组
- 按字母顺序、数字顺序和特殊字符对字符串数组进行排序
- 如何从字符串数组中获得8个随机唯一元素
- json_encode($myVar);正在给出地图,我想要一个字符串数组
- 函数,返回javascript中两个字符串数组的差值
- Javascript字符串数组转换为用逗号分隔的多个字符串