Как манипулировать строкой в ​​массиве - PullRequest
3 голосов
/ 22 июля 2010

У меня есть массив, содержащий некоторые поля

, например,

ctl00_ctl00_cphBody_bodycph_content_rdo_SID_25_SortOrder_17
ctl00_ctl00_cphBody_bodycph_content_rdo_SID_25_SortOrder_18
ctl00_ctl00_cphBody_bodycph_content_rdo_SID_25_SortOrder_19

Я хочу создать новый массив или манипулировать этим массивом, чтобы он содержал только

sid = {25,26,27}

from

_SID_25
_SID_26
_SID_27

где sid будет моим массивом, содержащим sid, извлеченный из указанного выше массива с шаблоном _SID_

Я должен сделать это в jquery или javascript

Ответы [ 3 ]

7 голосов
/ 22 июля 2010

использовать карту jquery + регулярное выражение

var arr= ['tl00_ctl00_cphBody_bodycph_content_rdo_SID_25_SortOrder_17',
    'ctl00_ctl00_cphBody_bodycph_content_rdo_SID_26_SortOrder_18',
    'ctl00_ctl00_cphBody_bodycph_content_rdo_SID_27_SortOrder_19']

    var out = $(arr).map(function(){
        return this.match(/SID_(.*?)_/)[1];
    });

out должен быть массивом значений ..

(при условии, что все значения в массиве соответствуют шаблону)

4 голосов
/ 22 июля 2010

Я бы использовал здесь регулярное выражение

var sid = []
var matches = "ctl00_ctl00_cphBody_bodycph_content_rdo_SID_25_SortOrder_17".match(/_SID_(\d+)/);
if(matches) sid.push(parseInt(matches[1]));
0 голосов
/ 22 июля 2010

Это решение полностью зависит от общей строковой формы, которая не меняется слишком сильно, то есть число «подчеркиваний» не меняется, что кажется хрупким, реквизиты даны комментатору ниже, но у него неправильный индекс. Мое оригинальное решение сначала разделено на «SID_», так как это больше походило на ключ, который всегда будет присутствовать в следующей строке.

Дано:

s = "ctl00_ctl00_cphBody_bodycph_content_rdo_SID_25344_SortOrder_17"

старое решение:

array.push(parseInt(s.split("SID_")[1].split("_")[0]))

новое решение

array.push(parseInt(s.split("_")[7])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...