删除最后一个元素的特定文本

时间:2016-10-13 01:52:43

标签: javascript

例如,我有一个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

我怎么能这样做?

5 个答案:

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