remove value from comma separated values string

前端 未结 9 1779
不知归路
不知归路 2020-12-30 05:27

I have a csv string like this \"1,2,3\" and want to be able to remove a desired value from it.

For example if I want to remove the value: 2, the output string should

相关标签:
9条回答
  • 2020-12-30 06:08

    Here are 2 possible solutions:

    function removeValue(list, value) {
      return list.replace(new RegExp(value + ',?'), '')
    }
    
    function removeValue(list, value) {
      list = list.split(',');
      list.splice(list.indexOf(value), 1);
      return list.join(',');
    }
    
    removeValue('1,2,3', '2'); // "1,3"
    

    Note that this will only remove first occurrence of a value.

    Also note that Array.prototype.indexOf is not part of ECMAScript ed. 3 (it was introduced in JavaScript 1.6 - implemented in all modern implementations except JScript one - and is now codified in ES5).

    0 讨论(0)
  • 2020-12-30 06:08

    or

    var csv_remove_val = function(s, val, sep) { 
      var sep = sep || ",", a = s.split(sep), val = ""+val, pos;
      while ((pos = a.indexOf(val)) >= 0) a.splice(pos, 1);
      return a.join(sep);
    }
    
    0 讨论(0)
  • 2020-12-30 06:14
    function removeValue(list, value) {
      return list.replace(new RegExp(",?" + value + ",?"), function(match) {
          var first_comma = match.charAt(0) === ',',
              second_comma;
    
          if (first_comma &&
              (second_comma = match.charAt(match.length - 1) === ',')) {
            return ',';
          }
          return '';
        });
    };
    
    
    alert(removeValue('1,2,3', '1')); // 2,3
    alert(removeValue('1,2,3', '2')); // 1,3
    alert(removeValue('1,2,3', '3')); // 1,2
    
    0 讨论(0)
  • 2020-12-30 06:18
    var removeValue = function(list, value, separator) {
      separator = separator || ",";
      var values = list.split(separator);
      for(var i = 0 ; i < values.length ; i++) {
        if(values[i] == value) {
          values.splice(i, 1);
          return values.join(separator);
        }
      }
      return list;
    }
    

    If the value you're looking for is found, it's removed, and a new comma delimited list returned. If it is not found, the old list is returned.

    Thanks to Grant Wagner for pointing out my code mistake and enhancement!

    John Resign (jQuery, Mozilla) has a neat article about JavaScript Array Remove which you might find useful.

    0 讨论(0)
  • 2020-12-30 06:18
    // Note that if the source is not a proper CSV string, the function will return a blank string ("").
    function removeCsvVal(var source, var toRemove)      //source is a string of comma-seperated values,
    {                                                    //toRemove is the CSV to remove all instances of
        var sourceArr = source.split(",");               //Split the CSV's by commas
        var toReturn  = "";                              //Declare the new string we're going to create
        for (var i = 0; i < sourceArr.length; i++)       //Check all of the elements in the array
        {
            if (sourceArr[i] != toRemove)                //If the item is not equal
                toReturn += sourceArr[i] + ",";          //add it to the return string
        }
        return toReturn.substr(0, toReturn.length - 1);  //remove trailing comma
    }
    

    To apply it too your var values:

    var values = removeVsvVal(selectedvalues, "2");
    
    0 讨论(0)
  • 2020-12-30 06:18

    guess im too slow but here is what i would do

    <script language="javascript"> 
    function Remove(value,replaceValue) 
    {   var result = ","+value+",";
    result = result.replace(","+replaceValue+",",",");
    result = result.substr(1,result.length);
    result = result.substr(0,result.length-1);
    alert(result);
    }
    
    Remove("1,2,3",2)
    </script>
    

    adding , before and after the string ensure that u only remove the exact string u want

    0 讨论(0)
提交回复
热议问题