2013-08-10 4 views
0

Я новичок в javascript.I хотите создать массив как 1,2,3,4,5Разбивает строку в Javascript с _

Но я получаю о/р, как, 1,2,3,4, 5

Я попытался использовать .split() в javascript, но я не получаю требуемый результат.

var string="testrating_1testrating_2testrating_3testrating_4testrating_5"; 
var temp = new Array(); 
temp = string.split("testrating_"); 
for (a in temp) { 
    temp[a] = temp[a]; 
} 

fiddle

+0

этот код отлично работает – slash197

+0

Возможно, странные вещи происходят, потому что у вас нет ''? – Ian

+0

(Не проблема, но) Для чего нужен цикл 'for'? Обратите внимание, что нет необходимости объявлять 'temp' равным' new Array() ', потому что этот массив никогда не используется, когда на следующей строке вы присваиваете' temp' равному возвращаемому значению из '.split()'. – nnnnnn

ответ

3

Вы могли бы сделать это следующим образом:

var string = "testrating_1testrating_2testrating_3testrating_4testrating_5", 
    temp = string.split('testrating_'); 

temp.shift(); //remove fist item which is empty 
console.log(temp); //["1", "2", "3", "4", "5"] 
2

Фактическое значение temp является ["","1","2","3","4","5"]. Это происходит из-за .split и строки, начинающейся с разделителя.

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

temp = string.split("testrating_").slice(1); 
+0

+1 для попытки объяснить –

0

Попробуйте это:

var string = "testrating_1testrating_2testrating_3testrating_4testrating_5"; 
var temp = string.split("testrating_").join("").split("").join(); 
console.log(temp); 

можно также сделать так:

var temp = string.replace(/testrating_/g,"").split("").join(); 

или просто:

var string = "testrating_1testrating_2testrating_3testrating_4testrating_5"; 
var temp = string.match(/[\d]/g); //your regex here 
console.log(temp); 

Не уверен в производительности.

0
var string="testrating_1testrating_2testrating_3testrating_4testrating_5"; 
// Split and remove first entry and return an array 
var final = string.split("testrating_").slice(1); 
$('#out').text(JSON.stringify(final)); 
+0

Во-первых, не используйте 'new Array()'. Используйте '[]' - он имеет несколько преимуществ - 'new Array (3)' не делает то же самое, что '[3]' –

+0

@JanDvorak - я использовал код OP - теперь отредактирован, чтобы удалить ненужный код – cyberwombat

1

Вы можете попробовать это ...

<!DOCTYPE html> 
<body> 

<button onclick="myFunction()">Try it</button> 

<script> 
function myFunction() 
{ 
var string="testrating_1testrating_2testrating_3testrating_4testrating_5"; 
var temp = []; 
temp = string.split("testrating_"); 
var tempNew=[]; 
for (a in temp) { 
    if(temp[a]!==''){ 
    tempNew.push(temp[a]); 
    } 

} 
alert(tempNew); 
} 
</script> 
</body> 
</html> 

JSFiddle

+1

't использовать 'new Array()'. Используйте '[]' - у него есть несколько преимуществ - 'new Array (3)' не делает то же самое, что '[3]' –

+0

да, я отредактировал мое ans ... спасибо. – anand4tech

1

Вы получаете, 1,2,3,4,5, потому что нет никакого символа в начале строки перед тем, как проверить, чем вы отделитесь.

либо вы можете удалить testrating_ из первой позиции, как заявление ниже

var str="1testrating_2testrating_3testrating_4testrating_5"; 
str.split("testrating_") 

Или вы можете удалить символ из первого индекса после получения результата, как из массива

var str="testrating_1testrating_2testrating_3testrating_4testrating_5"; 
str.split("testrating_").slice(1); 
0

ли это:

<!DOCTYPE html> 
<body> 

<button onclick="myFunction()">Try it</button> 

<script> 
function myFunction() 
{ 
    var string="testrating_1testrating_2testrating_3testrating_4testrating_5"; 
    var temp = new Array(); 
    temp = string.split("testrating_"); 

    var output = new Array(); 
    for (x = 0; x < temp.length; x++) { 
     output[x - 1] = temp[x]; 
    } 

    alert(output); 
} 
</script> 
</body> 
</html> 
0

Вы всегда можете использовать .splice:

var string="testrating_1testrating_2testrating_3testrating_4testrating_5"; 
temp = string.split("testrating_"); // temp = ["","1","2","3","4","5"] 
temp.splice(0,1) // temp = ["1","2","3","4","5"] 

Какое сращивание здесь идет до первого значения в массиве (индекс # 0) и удаляет одно значение из этой точки, которое будет пустой строкой "".

Чтобы дать немного больше объяснений, вы можете удалить пустую строку и «1» с помощью сращивания так:

temp.splice(0,2) // temp = ["2","3","4","5"]

Имейте в виду, что Splice непосредственно влияет на массив он призвал и возвращает массив значений, которые были удалены. Так что если вы сделали следующее:

values = temp.splice(0,2) // values=["","1"] temp=["2","3","4","5"]

Кроме того, в этом примере создает новый массив следующим образом temp = new Array(); является излишним, поскольку string.split() эффективно создает массив и заполняет его значениями, которые были расщепленных. Имейте это в виду. Надеюсь, это поможет и поприветствует мир программирования!

Смежные вопросы