Вы можете передать второй аргумент .map()
после обратного вызова. Это значение будет использоваться в качестве значения this
при вызове обратного вызова. Таким образом, вы можете пройти через объект, который вы можете использовать для накопления количества повторений:
data.map(function(d, i) {
if (!(d.value in this))
this[d.value] = 0;
else
this[d.value] += 1;
return [
d.value + (this[d.value] ? " (" + this[d.value] + ")" : ""),
d.count
];
}, {});
Начиная с пустого объекта, обратный вызов может отслеживать, сколько раз он видел каждую строку d.value
, Когда он видит повтор, он может добавить спецификатор к строке.
Так вот, это не совсем соответствует тому, что вы просили, потому что оно рассматривает только одно значение за раз. Таким образом, в первый раз, когда он видит "Personal/Seeding"
, он не знает, что это дубликат, поэтому он не изменяется с помощью спецификатора. Второй раз через это, конечно.
Выполнение того, что вы просили, если этого недостаточно, потребует сначала выполнить полный проход через массив, чтобы получить окончательное количество дубликатов для каждой строки.
Серверная сторона, "(? i)" может использоваться, но это не работает клиентское. Посмотрите здесь для большего количества обсуждения и обходного решения.
т.е. "... (? i) (jpg|jpeg|gif|png|wpf |..."
В VisualBasic.NET можно использовать RegExOptions для игнорирования его случай:
Dim RegexObj As New Regex("([^.]+[.](jpg|jpeg|gif))", RegexOptions.IgnoreCase)
Согласно Опциям Регулярного выражения, это должно работать:
// Added LowerCase i:
ValidationExpression="(?i:[^.]+[.](jpg|jpeg|gif|png|wpf|doc|docx|xls|xlsx ...