удалите значение из разделенной строки значений запятой

Управление пакетом и распределенное управление версиями.

Эти шаблоны в способе, которым программное обеспечение разрабатывается и распределяется, являются довольно недавними, и все еще только начинают оказывать влияние.

Ian Murdock звонил управление пакетом "единственное самое большое продвижение, которое Linux принес к промышленности". Ну, он был бы, но у него есть точка. Путем программное обеспечение установлено, изменился значительно с 1980, но большинство пользователей компьютера все еще не испытало это изменение.

Joel и Jeff говорили об управлении версиями (или управление версиями или управление исходным кодом) с Eric Sink в Подкаст № 36 . Кажется, что большинство разработчиков еще не догнало , централизовал системы, и DVCS широко рассматривается как таинственный и ненужный.

От Подкаст 36 расшифровок стенограммы :

0:06:37

Atwood: ... Если Вы принимаете - и это - большое предположение - что у большинства разработчиков есть вид вида фундаментального управления исходным кодом, с которым осваивают - который я нахожу, чтобы не быть верным, откровенно...

Spolsky: номер большинство из них, даже если они имеют, это - регистрация, контроль, который они понимают, но ветвление и слияние - который путает heck из них.

14
задан Raúl Roa 20 August 2009 в 13:24
поделиться

9 ответов

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;
}

Если значение, которое вы ищете, найдено, оно удаляется и разделяется запятой. список возвращен. Если он не найден, возвращается старый список.

Спасибо Гранту Вагнеру за указание на мою ошибку в коде и улучшение!

У Джона Ресайна (jQuery, Mozilla) есть отличная статья о JavaScript Array Remove , который может оказаться полезным.

44
ответ дан 1 December 2019 в 06:03
поделиться

Вот два возможных решения:

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"

Обратите внимание, что это удалит только первое вхождение значения.

Также обратите внимание, что Array.prototype.indexOf не является часть ECMAScript ed. 3 (он был представлен в JavaScript 1.6 - реализован во всех современных реализациях, кроме JScript one - и теперь кодифицирован в ES5).

3
ответ дан 1 December 2019 в 06:03
поделиться

значений теперь является массивом. Так что вместо того, чтобы выполнять обход самостоятельно.

Выполните:

var index = values.indexOf(value);
if(index >= 0) {
    values.splice(index, 1);
}

удаление одного объекта из данного индекса.

надеюсь, что это поможет

2
ответ дан 1 December 2019 в 06:03
поделиться
// 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
}

Чтобы применить его тоже, ваши значения var:

var values = removeVsvVal(selectedvalues, "2");
1
ответ дан 1 December 2019 в 06:03
поделиться

думаю, я слишком медленный, но вот что я бы сделал

<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>

, добавив до и после строки, чтобы убедиться, что u удаляет только ту строку, которую вы хотите

1
ответ дан 1 December 2019 в 06:03
поделиться
function process(csv,valueToDelete) {
  var tmp = ","+csv;
  tmp = tmp.replace(","+valueToDelete,"");
  if (tmp.substr(0,1) == ',') tmp = tmp.substr(1);
  return tmp;
}
0
ответ дан 1 December 2019 в 06:03
поделиться

используйте splice , pop или shift . в зависимости от ваших требований.

Вы также можете «найти» индексы элементов в вашем массиве, которые соответствуют, используя функцию, подобную найденной здесь: http://www.hunlock.com/blogs/Ten_Javascript_Tools_Everyone_Should_Have

var tmp = [5,9,12,18,56,1,10,42,'blue',30, 7,97,53,33,30,35,27,30,'35','Ball', 'bubble'];
//         0/1/2 /3 /4/5 /6 /7     /8  /9/10/11/12/13/14/15/16/17/  18/    19/      20
var thirty=tmp.find(30);             // Returns 9, 14, 17
var thirtyfive=tmp.find('35');       // Returns 18
var thirtyfive=tmp.find(35);         // Returns 15
var haveBlue=tmp.find('blue');       // Returns 8
var notFound=tmp.find('not there!'); // Returns false
var regexp1=tmp.find(/^b/);          // returns 8,20    (first letter starts with b)
var regexp1=tmp.find(/^b/i);         // returns 8,19,20 (same as above but ignore case)

Array.prototype.find = function(searchStr) {
  var returnArray = false;
  for (i=0; i<this.length; i++) {
    if (typeof(searchStr) == 'function') {
      if (searchStr.test(this[i])) {
        if (!returnArray) { returnArray = [] }
        returnArray.push(i);
      }
    } else {
      if (this[i]===searchStr) {
        if (!returnArray) { returnArray = [] }
        returnArray.push(i);
      }
    }
  }
  return returnArray;
}
0
ответ дан 1 December 2019 в 06:03
поделиться

или

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
ответ дан 1 December 2019 в 06:03
поделиться
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
6
ответ дан 1 December 2019 в 06:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: