我正在尝试完成该程序,遇到了一个我不太想知道的问题。我想将数字数组更改为其顺序计数器组成的字符串,这是我在此程序中完成的,我只希望最后的值离开级联的','(逗号空间)。我尝试使用if语句,但无法完全正常工作。
function getGetOrdinal(n) {
var s=["th","st","nd","rd"],
v=n%100;
return n+(s[(v-20)%10]||s[v]||s[0]);
}
var nums = [1, 2, 3, 4]
var n = "";
for ( var i = 0; i <= getGetOrdinal(4).length; i++ ) {
if ( n < getGetOrdinal(n) ) {
n += getGetOrdinal(nums[i]) + ', ';
console.log(n);
}
} // ['1st, 2nd, 3rd, 4th'] < ~ expected result
这里有两个选择:
一种方法是在for
循环内添加检查,只有在它不是循环的第一次迭代时,它才会以逗号开头:
for (var i=0; i <= getGetOrdinal(4).length; i++) {
if (n < getGetOrdinal(n)) {
if (i > 0) {
n += ', ';
}
n += getGetOrdinal(nums[i]);
}
}
console.log(n);
另一种选择是保留您的代码不变,但在结尾的逗号后加上子字符串:
for (var i=0; i <= getGetOrdinal(4).length; i++) {
if (n < getGetOrdinal(n)) {
n += getGetOrdinal(nums[i]) + ', ';
}
}
//n = n.substring(0, n.length - 2);
n = n.slice(0, -2);
console.log(n);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句