我已经解决了这个问题,但是我正在寻找是否有更好的方法可以做到这一点。小提琴-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"