我正在尝试计算预标记中数字数组中的某些数字。比如计算有多少数字是7或更高。 例如,我有这个
<pre class="data">2 7 3 1 2
6 6 2 5 3
8 2 5 9 9
5 10 5 6 10
2 10 3 </pre>
我已经弄清楚如何以一般方式获取数字:
document.getElementsByTagName ('PRE')[0].firstChild.data = document.getElementsByTagName ('PRE')[0].firstChild.data.replace (/\t+$/, '')
但我不知道如何获得个人数字。它是一个阵列吗?或者我需要按空格解析的数字列表?
我看过这个帖子:Using <pre> tag to display data in columns?并尝试使用for循环抓取$ entry [i],但我无法读取个别数字。
请帮助。
答案 0 :(得分:2)
以下将为您提供一个二维数组:
var str = document.getElementsByTagName('pre')[0].textContent;
str // take the string and
.split('\n') // break it into an array of lines;
.map(function(line) { // then transform each line by
return line // taking the line,
.trim() // removing leading and trailing spaces,
.split(/\s+/) // and breaking it into an array at whitespace,
.map(Number); // with each piece cast to a number.
});
答案 1 :(得分:1)
String.prototype.trim = function() { // just in case of an old browser
return this.replace(/^\s+|\s+$/gm,'');
}
var str = document.getElementById('data').innerHTML.trim();
var data = str.split(/\s+/);
alert(data);
数据将是一维数字数组(准确 - 带数字的字符串,但无关紧要 - 很容易投射)。
答案 2 :(得分:0)
http://jsbin.com/mepulu/2/edit
var text = document.getElementsByClassName('data')[0].innerHTML; // Text
var values = text.split(/\s+/); // Array of strings
var numbers = values.map(function(num) {
return parseInt(num, 10);
});
numbers; // Array of integers
答案 3 :(得分:-1)
预标签的内容只是文字。要访问这些数字,您必须解析文本。我假设你只需要数字列表,而且列没有意义。
如果是这样,您需要做的是在空格上拆分文本,然后处理每个项目:
var number_string = document.getElementsByTagName ('PRE')[0].firstChild.data;
var numbers = number_string.split(/[\s]+/);
var a_number;
for (var i = 0; i <= numbers.length; i++) {
a_number = parseInt(numbers[i]); // assuming the numbers are whole numbers.
}
请注意,数字[i]实际上是数字的字符串表示,因此您需要使用parseInt(numbers [i])来获取实数。 (或parseFloat(numbers [i]),如果它们不是整数)
希望这有帮助。
杰