我正在创建一个表格分类器并对一列中包含字母和数字的项目进行排序(例如,事情027)我在数字的开头添加了零,以便我可以对它们进行排序。所以,我的问题是,我想从数字中删除零,以使它看起来更干净。这是我的代码:
for (var kneecap = 0; kneecap < bronze.length; kneecap++) {
if(isNaN(bronze[kneecap]) === false && bronze[kneecap] === "0"){
if (bronze[kneecap - 1] != 1 && bronze[kneecap - 1] != 2 && bronze[kneecap - 1] != 3 && bronze[kneecap - 1] != 4 && bronze[kneecap - 1] != 5 && bronze[kneecap - 1] != 6 && bronze[kneecap - 1] != 7 && bronze[kneecap - 1] != 8 && bronze[kneecap - 1] != 9) {
bronze[kneecap] = "";
}
其中bronze是数组中包含每个字母/数字的每个元素。这个代码有效,但它真的很丑,我真的讨厌它。我希望有人能给我一个更好的方法来编写这段代码。
使用这段代码可能很难完全理解我的问题,所以这里有一个指向我的完整code的链接。 (不是全表分拣机只是我删除零的部分)。
答案 0 :(得分:0)
var array = [2, 5, 0];
var index = array.indexOf(0);
然后用拼接将其移除:
if (index > -1) {
array.splice(index, 1);
}
答案 1 :(得分:0)
查看您的代码,看起来您有一个字符串数组,其中包含前导零数字。我建议使用.replace()
:
for (var i = 0; i < solely_combined.length; i++) {
solely_combined[i] = solely_combined[i].replace(/0+(\d+)/g, "$1");
}
使用您的实际数组进行演示:http://jsfiddle.net/jfriend00/MJQY4/
正则表达式如下:
/ - start of a regular expression
0+ - one or more zeros
( - start of a group
\d+ - one or more digits
) - end of a group
/ - end of a regular expression
g - "g" flag on the regular expression which means to replace all occurrences
$1 - replace what is found with the first group in the match
所以,总的来说是正则表达式:
/0+(\d+)/
是一个或多个零后跟一个或多个数字
然后整个匹配被替换为在parens内部匹配的内容,将前导零留在替换中(有效地删除前导零)。
互联网上有许多网站用于学习正则表达式。我使用this one作为参考。