如何创建多维数组,该数组的维数由字符串的长度确定,以创建数组

时间:2019-06-23 09:04:59

标签: javascript html arrays

我想从HTML中的input元素得到的给定字符串创建矩形多维数组。矩形的尺寸取决于字符串的长度。

例如

ifmanwasmeanttostayonthegroundgodwouldhavegivenusroots

纯文本应组织成一个矩形。矩形(​r x c​)的大小应由邮件的长度决定,例如c >= r​c - r <= 1 其中 c 是列数,r是行数。
我们的规范化文本长54个字符,指定了一个c = 8和r = 7的矩形:
"ifmanwas" "meanttos" "tayonthe" "groundgo" "dwouldha" "vegivenu" "sroots

请检查https://codepen.io/djtush/pen/ewvNEG看看我做了什么。

const  myFunction = ()  =>
{
  let message = document.getElementById("message").value;
 if (message.length < 50) {
   alert ("Your Message can not be less than 50 Characters");
 }
  else {
  let removedSpace = message.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
  document.getElementById("noSpace").innerHTML = removedSpace;
  let squared = Math.sqrt(removedSpace.length);
  let column = Math.ceil(squared);
  let row = Math.floor(squared);
   document.getElementById("no-Space").innerHTML = row;
 }
}

我希望有一个数组块

2 个答案:

答案 0 :(得分:1)

让正则表达式完成这项工作:

s = 'ifmanwasmeanttostayonthegroundgodwouldhavegivenusroots'
n = Math.ceil(Math.sqrt(s.length))
r = s.match(new RegExp(`.{1,${n}}`, 'g'))
console.log(r)

答案 1 :(得分:0)

您可以从cols = length of string开始,然后使用while循环增加行数,直到cols - rows > 1。然后,您可以使用列数来分割字符串。

function rect(string) {
  let len = string.length;
  let cols = len, rows = 1;
  let res = []

  while (cols - rows > 1) {
    rows += 1;
    cols = Math.ceil(len / rows);
  }

  for (let i = 0; i < rows; i++) {
    res.push(string.slice(i * cols, i * cols + cols))
  }

  return res;
}

console.log(rect('ifmanwasmeanttostayonthegroundgodwouldhavegivenusroots'))
console.log(rect('randomteststring'))