【问题标题】:JavaScript - Insert an element to an array without affecting the indexes?JavaScript - 将元素插入数组而不影响索引?
【发布时间】:2016-08-28 22:50:18
【问题描述】:

我正在研究这样的问题一段时间,试图弄清楚如何处理索引。问题来了:

我有一个字符串:thisIsGreat 使用的基本操作如下:

var str = "thisIsGreat"; 
str = str.split(''); //Making it an array
.....
str = str.join(''); //String it back again
console.log(str);

所需输出:["t","h","i","s"," ","I","s"," ","G","r","e","a",t"]

我很难在这些单词之间插入空格而不影响索引。我尝试了类似的方法,但没有成功。

for (var i = 0; i < str.length; i++){
     if (str[i]+1 == (str[i].toUpperCase())+1)
      str[i] = " ";
}

有没有办法解决这个问题?有什么想法吗?

【问题讨论】:

  • 你需要使用同一个数组吗?你不能生成另一个结果吗?
  • 是的,如果需要,我可以生成一个新数组。有什么想法吗?
  • For (var in something) 用于获取对象的所有属性,而不是数组的元素。你到底想达到什么目的?
  • @It-Z 我的错误,使用了错误的循环..现在编辑..

标签: javascript arrays regex


【解决方案1】:

您可以使用带有正向预测的替换。

var str = "thisIsGreat";
   
str = str.replace(/(?=[A-Z])/g, ' ').split('');
document.write('<pre>' + JSON.stringify(str, 0, 4) + '</pre>');

【讨论】:

    【解决方案2】:

    您的问题不是很清楚,如果您只想在每个大写字母前插入一个空格,使用正则表达式相当容易:

    r = "thisIsGreat".replace(/[A-Z]/g, " $&");
    alert(r)

    【讨论】:

    • 不客气。顺便说一句,尼娜的回答更准确。
    【解决方案3】:

    使用你自己的逻辑

    var str = "thisIsGreat"; 
    str = str.split(''); //Making it an array
    var result = [];
    for (var i in str){
     if (str[i]+1 == (str[i].toUpperCase())+1){
      result.push(" ");
      result.push(str[i]);
     }else{
      result.push(str[i]);
      }
    }
    result = result.join(''); //String it back again
    console.log(result);
    

    如果您不希望结果为字符串,只需删除最后的连接。

    https://jsfiddle.net/Ldp58onu/2/

    【讨论】:

    • 感谢您坚持我的逻辑!效果很好!!
    【解决方案4】:

    只需反转您的 for 循环即可。

    for (var i = str.length - 1; i >= 0; i--){
         if (str[i]+1 == (str[i].toUpperCase())+1)
          str[i] = " ";
    }
    

    【讨论】:

      【解决方案5】:
      'thisIsGreat'.replace(/([A-Z])/g,' $1').split('').join('", "')
      //Output: "t", "h", "i", "s", " ", "I", "s", " ", "G", "r", "e", "a", "t"
      

      【讨论】:

        猜你喜欢
        • 2017-03-17
        • 1970-01-01
        • 2016-12-23
        • 2015-10-07
        • 2022-01-25
        • 2013-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多