如何将逗号空间留在数组末尾?

时间:2016-09-02 04:06:00

标签: javascript arrays for-loop

我正在尝试完成这个程序,并遇到了一个我无法理解的问题。我想把数字数组改成一个序数计数器部分的字符串,我已经用这个程序完成了,我只想把最后一个值留给连接的',' (逗号空间)。我尝试使用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 

3 个答案:

答案 0 :(得分:4)

你可以这样做:

var nums = [1, 2, 3, 4]
> undefined
nums.map(getGetOrdinal).join(', ')
> "1st, 2nd, 3rd, 4th"

答案 1 :(得分:3)

以下是两个选项:

一种方法是在<canvas id="canvas" width="600" height="400"></canvas> 循环中添加检查,只有当它不是循环的第一次迭代时才会预先加上一个逗号:

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);

答案 2 :(得分:2)

您可以使用Array.prototype.join加入具有指定分隔符的数组:

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 numsWithOrdinal = nums.map(getGetOrdinal);

var joined = numsWithOrdinal.join(', ');
console.log(joined);