我已经解决了这个问题,但是我正在寻找是否有更好的方法可以做到这一点。小提琴-https://jsfiddle.net/143h9wrq/所以我要做的是检查是否有2个以上的ID,然后将字符串转换成数组,获取最后一个数组项并添加“和”,将其放回一起并显示出来。

我正在寻找是否有一种更好的方法来压缩这种情况。我在项目中而不是在示例中使用Angular。基本上listArr是$ scope.listArr,问题是$ user.issues。

JS:

var issuesId =[1,2,3,4]
var issues = "issue one, issue two, issue three, issue four";

if (issuesId.length >= 2) {
  var str = issues.split(', ');
  var addAnd = str.pop();
  addAnd = 'and ' + addAnd;
  str.push(addAnd);
  var listArr = str.join(', ');
  document.getElementById('text').innerHTML = listArr;
}
else {
  var listArr = issues;
  document.getElementById('text').innerHTML = listArr;
}


HTML:

<p>{{listArr}}</p>

最佳答案

最短的解决方案是使用正则表达式:

var s = "a, b, c";

s.replace(/ ([^,]*)$/, " and $1"); // "a, b, and c"


要么:

s.replace(/, ([^,]*)$/, " and $1"); // "a, b and c"

09-11 01:26