我只是在玩Javascipt作为练习。我只想将字符串中每个空格的索引号推送到一个数组中。虽然没有运气,我的阵列是空的 - 或者充满空间,我不知道哪个。任何帮助都会得到优雅的接受。 :)
function checkText() {
var str1 = document.getElementById("texty").innerHTML;
var dexArray = [];
for (var i = 0; i < str1.length; i++) {
if (str1.indexOf(str1[i]) === " ") {
dexArray.push(str1.indexOf(str1[i]));
}
}
alert(dexArray);
}
<p id="texty">Mary had a little lamb</p>
<button onclick="checkText()">Click</button>
答案 0 :(得分:1)
您只需要检查位置i
处的字符,然后将其推送到结果中。
function checkText() {
var str1 = document.getElementById("texty").innerHTML;
var dexArray = [];
for (var i = 0; i < str1.length; i++) {
if (str1[i] === " ") {
dexArray.push(i);
}
}
console.log(dexArray);
}
&#13;
<p id="texty">Mary had a little lamb</p>
<button onclick="checkText()">Click</button>
&#13;
indexOf
的版本。
function checkText() {
var str1 = document.getElementById("texty").innerHTML,
dexArray = [],
i = str1.indexOf(' ');
while (i !== -1) {
dexArray.push(i);
i = str1.indexOf(' ', i + 1); // change start postion for search
}
console.log(dexArray);
}
&#13;
<p id="texty">Mary had a little lamb</p>
<button onclick="checkText()">Click</button>
&#13;
答案 1 :(得分:1)
由于您的if-condition
,indexOf
返回number
而不是string
,更不用说空格字符' '
了。
function checkText() {
var str1 = document.getElementById("texty").innerHTML;
var dexArray = [];
for (var i = 0; i < str1.length; i++) {
str1.charAt(i) == ' ' && dexArray.push(i);
}
alert(dexArray);
}
&#13;
<p id="texty">Mary had a little lamb</p>
<button onclick="checkText()">Click</button>
&#13;
答案 2 :(得分:1)
您应该使用比较运算符==
或===
代替indexOf
function checkText() {
var str1 = document.getElementById("texty").innerHTML;
var dexArray = [];
Array.from(str1).forEach((x,i)=>{x === " " && dexArray.push(i) });
console.log(dexArray);
}
&#13;
<p id="texty">Mary had a little lamb</p>
<button onclick="checkText()">Click</button>
&#13;
function checkText() {
var str1 = document.getElementById("texty").innerHTML;
var dexArray = [];
str1.split("").forEach(function(x,i){
x === " " && dexArray.push(i)
});
console.log(dexArray);
}
&#13;
<p id="texty">Mary had a little lamb</p>
<button onclick="checkText()">Click</button>
&#13;
答案 3 :(得分:1)
String.prototype.indexOf
返回给定子字符串的索引,并将其与空间' '
进行比较。 indexOf
的全部用法毫无意义。如果您确实需要使用indexOf
,那么您可能需要查看此方法所采用的参数,并注意它可以将偏移量作为第二个参数,但我总是更喜欢更简单的解决方案如果我有一个。
您可以这样做:
var str1 = 'whatever string you want to play with';
var arraySpaces = [];
var length = str1.length;
var i = -1;
while (++i < length) {
if (str1[i] === ' ') {
arraySpaces.push(i);
}
}
console.log(arraySpaces);
这样,您就可以在数组中获得空格的实际索引。
由于这是一个练习,您可能需要查看Regexp.prototype.test和Regexp的lastIndex,如果您要查找更长的子字符串,它可以进行更方便的索引搜索。
祝你好运。答案 4 :(得分:0)
是空的,你可以使用alert(&#34; 1&#34; + dexArray +&#34; 1&#34;)测试,因为str1.indexOf(str1 [i])返回数字。