【发布时间】:2021-08-24 12:57:54
【问题描述】:
我想做一个小程序,从数组中删除一些不需要的字符,如“/n”、“/t”,问题是它部分工作。我看到程序删除了一些我想要的字符,但不是所有索引(例如:第 3 和第 5):
程序:
var contenuespacemenu = $('.Espace-Menu').children('div').html(); //the array which contains characters i want to delete.
var bannedcaractere = ["\n", "\t"];
var caractereinside = [];
for (var i = 0; i < 50; i++) {
for (var j = 0; j < (bannedcaractere.length); j++) {
let test = contenuespacemenu[i] == bannedcaractere[j];
if (test) {
i = i + 1;
} else {
caractereinside[i] = contenuespacemenu[i];
}
}
}
console.log(caractereinside);
它显示了这个结果:
一些不需要的字符被删除但不是全部... 索引 3 和 5。
这里是将html标签的字符串内容逐个字符放入数组“caractereinside”的主要代码:
var contenuespacemenu = $('.Espace-Menu').children('div').html();
//var bannedcaractere = ["\n","\t"];
var caractereinside = [];
for (var i = 0; i < 50; i++) {
caractereinside[i] = contenuespacemenu [i];
}
console.log(caractereinside);
结果:
如果我将“var contenuespacemenu”转换为像这样的常规数组,它可以工作:
var contenuespacemenu = ["1","2","3","4","5","6","7","8"];
//var bannedcaractere = ["\n","\t"];
var caractereinside = [];
for (var i = 0; i < 50; i++) {
caractereinside[i] = contenuespacemenu [i];
}
console.log(caractereinside);
我明白了:
我还尝试用一个中断来替换 i = i+1,就像我被要求的那样,就像这样:
var contenuespacemenu = $('.Espace-Menu').children('div').html();
var bannedcaractere = ["\n","\t"];
var caractereinside = [];
for (var i = 0; i < 50; i++) {
for (var j = 0; j < (bannedcaractere.length); j++) {
let test = contenuespacemenu[i] == bannedcaractere[j];
if (test) {
break;
}
else {
caractereinside[i] = contenuespacemenu[i];
}
}
}
console.log(caractereinside);
但它给了我这个:
最后,我再次尝试使用 i = i+1 并为 var contenuespacemenu 定义数组,还更改了 var 禁止字符,它的工作方式与预期一样:
var contenuespacemenu = ["1","2","3","4","5","6","7","8"];//the array which contains characters i want to delete.
var bannedcaractere = ["1", "2","3","4"];
var caractereinside = [];
for (var i = 0; i < 50; i++) {
for (var j = 0; j < (bannedcaractere.length); j++) {
let test = contenuespacemenu[i] == bannedcaractere[j];
if (test) {
i = i+1;
} else {
caractereinside[i] = contenuespacemenu[i];
}
}
}
console.log(caractereinside);
结果:
【问题讨论】:
-
听起来你的想法过于复杂了,为什么不用
includes()这样的东西? -
首先,你的
contenuespacemenu不是一个数组,jQuery的.html()返回一个字符串。第二,为什么i从0到50,为什么不首先考虑contenuespacemenu的实际长度? -
这可以作为一个带有一点正则表达式的单行来完成……
-
手动增加
i会破坏循环计数器。 -
你的问题中没有 Jquery:What is the difference between JavaScript and jQuery?.
标签: javascript jquery for-loop indices