是否有Javascript方法可以实现嵌套括号的串联?

是否有Javascript方法可以实现嵌套括号的串联?,javascript,string,concatenation,Javascript,String,Concatenation,我试图从输入中创建一个字符串,但格式独特 输入将是单个字:word1 在第一次输入之前,字符串将为空,然后字符串myString将为+-word1 对于第二个输入:word2,myString现在需要如下所示: +(-word1+(-word2)) 为了清楚起见,第三个输入:word3,myString现在将是: +(-word1+(-word2+(-word3))) 我相信这需要一些比普通字符串连接更聪明的东西。我宁愿不使用循环 是否有本机Javascript或潜在的JQu

我试图从输入中创建一个字符串,但格式独特

输入将是单个字:word1

在第一次输入之前,字符串将为空,然后字符串myString将为+-word1

对于第二个输入:word2,myString现在需要如下所示:

    +(-word1+(-word2))
为了清楚起见,第三个输入:word3,myString现在将是:

    +(-word1+(-word2+(-word3)))
我相信这需要一些比普通字符串连接更聪明的东西。我宁愿不使用循环

是否有本机Javascript或潜在的JQuery函数可以完成创建这样的字符串? 这就是我所做的

    var myString = '';

    function someFunction()
    { 
     ...

      var inputString = document.getElementById('my-input').value;
      myString = myString + "+(" + "-" + inputString + ")";
    }
然而,这是生产

    +(-word1)+(-word2)

这是有意义的,因为字符串只是在函数中串联,需要做的是某种插入。是否有一种Javascript方法可以使插入更容易?可能类似于在当前字符串的倒数第二个空格插入新字符串?但是,它不是数组,所以我不知道这里的最佳实践。

不确定这是否是最漂亮的方法,但您可以使用单词列表上的地图

const words=['word1','word2','word3'] 让result='+'+words.mapw=>`-${w}+`.join.replace/\+$/,+.padStartwords.length,
console.logresult不确定这是否是最漂亮的方法,但您可以使用单词列表上的地图

const words=['word1','word2','word3'] 让result='+'+words.mapw=>`-${w}+`.join.replace/\+$/,+.padStartwords.length,
console.logresult查找第一个关闭父项并替换该值

常量insert=s,v=>s?s、 {}{}{$\/-$替换为“$\/”;
console.log['word1'、'word2'、'word3'].reduceinsert,未定义 查找第一个闭合父项并替换该值

常量insert=s,v=>s?s、 替换/?=\/,`+-${v}`:`+-${v}`;
console.log['word1'、'word2'、'word3'].reduceinsert,未定义 使用count变量存储添加的单词数,然后将字符串切分到只剩下右括号的位置

插入你的新词

添加剩余的字符串

var myString = '';
var count = 0
    function someFunction()
    { 
     ...
      count++;
      var inputString = document.getElementById('my-input').value;
      myString = myString.slice(0,0-count) + "+(" + "-" + inputString + ")" + myString.slice(0-count);
    }

使用count变量存储添加的单词数,然后将字符串切分到只剩下右括号的位置

插入你的新词

添加剩余的字符串

var myString = '';
var count = 0
    function someFunction()
    { 
     ...
      count++;
      var inputString = document.getElementById('my-input').value;
      myString = myString.slice(0,0-count) + "+(" + "-" + inputString + ")" + myString.slice(0-count);
    }
如果可以将连续输入存储到数组中,则该方法非常适合此问题:

const words=['word1','word2','word3']; 设res=words.reduceRights,word=>`+-${word}${s}`; console.logres; .as控制台{背景颜色:黑色!重要;颜色:石灰;} .as console wrapper{max height:100%!important;top:0;}如果可以将连续输入存储到数组中,则该方法非常适合此问题:

const words=['word1','word2','word3']; 设res=words.reduceRights,word=>`+-${word}${s}`; console.logres; .as控制台{背景颜色:黑色!重要;颜色:石灰;}
.作为控制台包装器{max height:100%!important;top:0;}Ah,但是您可以看到,正常的字符串连接确实非常聪明

又快又脏,您所需要做的就是在每个括号之间放置+-并附加最后的括号。呵呵

arr=['word1','word2','word3'];
console.log'+-'+arr.join'+-'+.repeatarr.length 啊,但是你看,普通的字符串连接确实非常聪明

又快又脏,您所需要做的就是在每个括号之间放置+-并附加最后的括号。呵呵

arr=['word1','word2','word3'];
console.log'+-'+arr.join'+-'+.repeatarr.length;问题是从+-word1+-word2到+-word1+-word2+-word3的转换不能通过连接完成,因为第一个不是第二个的子字符串。你得做更复杂的操作。正如您所指出的,您必须在前一个字符串中插入新字符串。问题是从+-word1+-word2到+-word1+-word2+-word3不能通过串联来完成,因为第一个字符串不是第二个字符串的子字符串。你得做更复杂的操作。正如您所指出的,您必须在前一个字符串中插入新字符串。未定义的值在这里是什么意思?它只是一个假值,表示嵌套结构的开始。未定义的值在这里是什么意思?它只是一个假值,表示嵌套结构的开始。