例如,我有一个for循环,会生成某种单词
for(var i=0;i<profile.test.length;i++){
var wordList = wordList + profile.test[i].text.map(function(k) {
return k.split(/,\s*/).join('+');
}).join(' , ') + '|';
};
这将返回类似
的内容hhh1+hhhh2|fdsg+gsdg , 123+1232|
但我想删除最后一个“|”
hhh1+hhhh2|fdsg+gsdg , 123+1232
我怎么能这样做?
答案 0 :(得分:2)
如果外循环返回一个数组,则可以使用join
。
这是有效的,因为join
获取数组的元素,并使用传入的参数作为分隔符/分隔符将它们“连接”在一个字符串中。
这意味着var example = ['a', 'b', 'c'].join('|')
将example
设置为'a|b|c'
。
在您的示例中,如果不知道profile
的值,则很难重构代码并知道它的工作原理。但是,如果您修改现有代码,您应该能够做到这一点:
profile.test.map(function(item) {
return item.map(function(k) {
return k.split(/,\s*/).join('+');
}).join(' , ')
}.join('|');
这是使用与上述相同概念的类似问题的另一个例子:
// hhh1 , hhhh2|fdsg , gsdg
var items = [{text:'hhh1, hhhh2'}, {text: 'fdsg, gsdg'}]
var out = items.map(function(item) {
return item.text.split(/,\s*/).join(' , ');
}).join('|');
console.log(out)
答案 1 :(得分:2)
你可以改变'|'到
i !== profile.test.length - 1 ? '|' : ''
会将您的代码更改为:
for(var i=0;i<profile.test.length;i++){
var wordList = wordList + profile.test[i].text.map(function(k) {
return k.split(/,\s*/).join('+');
}).join(' , ') + (i !== (profile.test.length - 1) ? '|' : '');
};
答案 2 :(得分:1)
您可以使用生成的String的substr方法删除最后一个字符:
wordList = wordList.substr(0, wordList.length -1);
答案 3 :(得分:0)
最后一个“|”的一般解决方案不是最后一个字符定义它的位置可能是这样的:
str ="abc|def|ghi|nope";
var lastPos = str.lastIndexOf('|');
var wordStart = str.substring(0,lastPos);
var wordEnd = str.substring(lastPos+1);
alert(wordStart + wordEnd);
的jsfiddle:
https://jsfiddle.net/e59erp0h/
在真正的单词szenarios中,id建议缩短它(除非你想和任何人一起玩);(
答案 4 :(得分:-1)
在循环后添加此代码以删除最后一个字符
wordList = wordList.substring(0, wordList.length - 2);