繁体   English   中英

Javascript-以数字计算字符串数组的长度

[英]Javascript - Count in numbers the length of an array of strings

解释起来有点奇怪,但是我有一个字符串数组,我得到了它的长度,例如5。我可以很容易地打印出数字“ 5”。

const myArray = ['A', 'B', 'C', 'D', 'E'];

myArray.length = 5;

但是,当我想在页面上显示数字“ 1 2 3 4 5”时,该怎么办呢?比如说每个在各自的p标签中? 我数组的内容不是数字。 只有五个。 如果需要的话,我需要在页面上将其计算在内

myArray.??? = 1, 2, 3, 4, 5 or 1 2 3 4 5

如果有人有任何想法,请告诉我。

尽管我不确定 ,但这是您想要的吗? 但是如果我正确理解了您的问题,就让我们用简单的forEach()完成,

 const myArray = ['A', 'B', 'C', 'D', 'E']; myArray.forEach((element, index)=> { var para = document.createElement("P"); // Create a <p> element var t = document.createTextNode(`${index+1}`); // Create a text node para.appendChild(t); // Append the text to <p> document.body.appendChild(para); // Append <p> to <body> }) 

您可以将JSX与ES6结合使用来执行以下操作:

render() {
  return <div>
    {
      myArray.map((element, index)) =>
        <p>Element #{index} is {element}</p>
    }
  </div>
}

如果我正确理解了您的意思,那么这就是您想要的(使用ES6):

 var dt = ["a", "b","c", "d"]; for (let idx in dt) { let new_node = document.createElement("p"); new_node.innerHTML=idx; document.getElementById("container").appendChild(new_node); } 
 <div id="container"></div> 

这通常称为range函数。 用Javascript有很多方法可以做到这一点。 这是我有时使用的:

 const range = (lo, hi) => [...Array(hi - lo + 1)].map((_, i) => lo + i) const vals = ['A', 'B', 'C', 'D', 'E'] console.log(range(1, vals.length)) 

这不会检查您的输入是否为整数或hi >= lo 这些很容易添加,具体取决于您的需求。

说明

我们通过创建减去我们想要的元素数量开始lo从价值hi之一,加1(增加一个是因为我们包括范围两端 range(5, 7)应具备三个要素,而不是两个: 56 ,和7 )。我们将该值传递给该Array构造函数,它创建了一个稀疏阵列长度n

麻烦的是,当JavaScript尝试遍历这个新的阵列,它不打扰访问缺少的元素,所以我们通过将其视为可迭代和转弯,早到一个数组把它变成一个类似,但不完全相同的数组: [...Array(5)] 区别很简单。 第一阵列具有为5的长度,但没有性能如0123 ,或4 新的属性具有此类属性,每个属性的值均为undefined 3 in Array(5) //=> false ,但3 in [...Array(5)] //=> true 。)

现在,我们使用第二个参数mapmap这些值,该参数跟踪数组中元素的索引。 因为我们忽略了第一个参数,所以我们给它一个一次性的名称_ 将该索引添加到较低的值即可得到我们的range元素。

所以range(3, 8) //=> [3 + 0, 3 + 1, 3 + 2, 3 + 3, 3 + 4, 3 + 5]这是[3, 4, 5, 6, 7, 8]

变化

如果您始终要在范围的开头使用1 ,则可以编写一个没有该版本的版本,但是代码只会稍微简单一些,而函数的灵活性会降低。 但是,如果您愿意,那将是

const range = (hi) => [...Array(hi)].map((_i) => i + 1)

但是通过使用原始函数可以创建更多的灵活性:

const range = (lo) => (hi) => [...Array(hi - lo + 1)].map((_, i) => lo + i)
const rangeFrom1 = range(1)

您可以这样使用:

console.log(rangeFrom1(vals.length))

这为您提供了通用范围,也为您提供了始终从一开始的范围。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM