![](/img/trans.png)
[英]javascript - convert an array of strings and numbers to an array of numbers
[英]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)
应具备三个要素,而不是两个: 5
, 6
,和7
)。我们将该值传递给该Array
构造函数,它创建了一个稀疏阵列长度n
。
麻烦的是,当JavaScript尝试遍历这个新的阵列,它不打扰访问缺少的元素,所以我们通过将其视为可迭代和转弯,早到一个数组把它变成一个类似,但不完全相同的数组: [...Array(5)]
。 区别很简单。 第一阵列具有为5的长度,但没有性能如0
, 1
, 2
, 3
,或4
。 新的属性具有此类属性,每个属性的值均为undefined
。 ( 3 in Array(5) //=> false
,但3 in [...Array(5)] //=> true
。)
现在,我们使用第二个参数map
来map
这些值,该参数跟踪数组中元素的索引。 因为我们忽略了第一个参数,所以我们给它一个一次性的名称_
。 将该索引添加到较低的值即可得到我们的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.