【问题标题】:How to remove specific part of string from each item of array using javascript?如何使用javascript从数组的每个项目中删除字符串的特定部分?
【发布时间】:2016-09-21 17:47:12
【问题描述】:

鉴于以下情况:

var arr = [
    "one,two,three",
    "four,five,six,seven",
    "eight,nine,ten",
    "11,12,13,14"
];

从数组中的每个元素中删除第二个单词的最佳方法是什么?数组的期望输出是:

arr = [
    "one,three",
    "four,six,seven",
    "eight,ten",
    "11,13,14"
];

我觉得最合乎逻辑的方法是使用 for 循环循环遍历数组并从每个元素中删除索引 1,如下所示:

for(var i=0; i < arr.length; i++) {
    i.splice(1,1).join(';');
}

(在循环中,我也尝试过arr[i].splice(1,1).join(';');)---但两种方法都没有返回预期的结果。我做错了什么,最有效的方法是什么?

【问题讨论】:

  • 您希望输出是一个包含已删除元素的数组,对吗?

标签: javascript arrays string loops


【解决方案1】:

需要先拆分数组,再移除元素。

var arr = [
  "one,two,three",
  "four,five,six,seven",
  "eight,nine,ten",
  "11,12,13,14"
];

for (var i = 0; i < arr.length; i++) {
  // split the string based on ,
  var a = arr[i].split(',');
  // remove second element from string
  a.splice(1, 1);
  // join the updated string array
  arr[i] = a.join();
}

console.log(arr);

或使用String#indexOfString#slice 方法的另一种方法。

var arr = [
  "one,two,three",
  "four,five,six,seven",
  "eight,nine,ten",
  "11,12,13,14"
];

for (var i = 0; i < arr.length; i++) {
  // get the index of first ,
  var index = arr[i].indexOf(','),
    // get the index of second index
    index1 = arr[i].indexOf(',', index + 1);
  // generate the string based on index
  arr[i] = arr[i].slice(0, index) + arr[i].slice(index1);
}

console.log(arr);

【讨论】:

    【解决方案2】:

    首先你必须在数组中打破你的字符串:

    elements = arr[i].split(',');
    

    然后你拼接第二个元素并将字符串连接回来:

    elements.splice(1,1)
    result = elements.join(',');
    

    最后你用新的替换字符串:

    arrs[i] = result
    

    总结一下:

    for(var i=0; i<arr.length; i++){
        elements = arrs[i].split(',');
        elements.splice(1,1);
        arrs[i] = elements.join(',');
    }
    

    玩得开心!

    【讨论】:

      【解决方案3】:

      Array.prototype.splice 函数返回删除的项目。

      您需要存储数组,删除项目,最后返回数组。

      var arr = [
        "one,two,three",
        "four,five,six,seven",
        "eight,nine,ten",
        "11,12,13,14"
      ];
      
      function spliceWords(arr, pos, length) {
        length = length || 1; // Default number to remove is 1.
        return arr.map(function(item) {
          var words = item.split(',');
          words.splice(pos, length); // Splice removes the items in-place.
          return words.join(',');
        });
      }
      
      var arr2 = spliceWords(arr, 1);
      
      document.body.innerHTML = JSON.stringify(arr2, null, 4);
      body { font-family:monospace; white-space:pre; }

      【讨论】:

        【解决方案4】:

        您可以使用.map() 更改数组的每一项,并使用.replace() 从字符串中删除第二个值。

        var arr = [
            "one,two,three",
            "four,five,six,seven",
            "eight,nine,ten",
            "11,12,13,14"
        ];
        
        arr = arr.map(function(val){
            return val.replace(/([\w]+),[\w]+,(.*)/, "$1,$2");
        });
        console.log(arr);

        【讨论】:

          【解决方案5】:

          您可以对字符串使用正则表达式,它会查找逗号、任何字符、非灰色和另一个逗号,它不包含在替换中。

          var arr = ["one,two,three", "four,five,six,seven", "eight,nine,ten", "11,12,13,14"];
          
          arr = arr.map(function (a) {
              return a.replace(/,.*?(?=,)/, '');
          });
          
          console.log(arr);

          【讨论】:

            【解决方案6】:
            1. 遍历数组中的每个元素
            2. 使用 split() 方法创建逗号分隔元素数组
            3. 使用 splice() 方法删除数组中的第二部分

            算法如下:

            for(var i=0; i < arr.length; i++) {  
            var a = arr[i].split(",");  
            a.splice(1,1);  
            arr[i] = a.join();  
            }
            

            【讨论】:

              【解决方案7】:

              给你:

              arr.map(x => x.replace(x.match(/,[^,]*/),""))
              

              或者

              arr.map(function(x) x.replace(x.match(/,[^,]*/),""))
              

              结果:

              ["one,three", "four,six,seven", "eight,ten", "11,13,14"]
              

              正则表达式查找第一个逗号 (,) 并抓取后面所有不是逗号 ([^,]*) 的内容。这部分字符串将被任何内容("")替换。

              map 方法会将此函数应用于数组的每个元素。

              【讨论】:

                猜你喜欢
                • 2013-05-17
                • 2021-05-22
                • 1970-01-01
                • 2019-11-17
                • 1970-01-01
                • 2018-06-06
                • 2018-05-15
                • 2014-07-03
                相关资源
                最近更新 更多