2015-08-27 3 views
0

У меня есть строка, подобная этой, Fy 2002.car.state.Нужно разбить строку на основе заданного числового значения в jQuery

мне нужно разделить это на основе значения, если значение 0 мне нужно разделить, как «Fy 2002», «автомобиль», «состояние» separately.If значение 1, мне нужно разделить, как это «Fy 2002 .car», "состояние".

Как достичь этого без использования цикла? Благодарю.

+1

возможно, что 'индекс = 2'? и если да, то каким должен быть результат? –

+1

Его действительно сложно понять, что вы ожидаете, поскольку в вашем требовании нет прогрессивного потока. – dreamweiver

+1

У вас есть только пробелы и точки для разделения? –

ответ

1

Сначала создайте массив, используя split.
Затем отрежьте массив, используя сплайсинг.
Наконец, присоединитесь к пунктам вырезания, используя join и поместите его в массив.

function mysplit(str, index){ 
    var a = str.split('.') 
    if(index){ 
    a[0] += '.' + a.splice(1, index).join('.') 
    } 
    return a 
} 

Другая возможность - использовать функцию уменьшения.

function mysplit2(str, index){ 
    var a = str.split('.') 
    if(index){ 
    a = a.reduce(function(p, c, i) { 
     p.push(c) 
     return (i <= index ? [p.join('.')] : p) 
    },[]) 
    } 
    return a 
} 
+0

есть. Это то, чего я ожидаю. –

0

Вы можете сделать это с split

var str="Fy 2002.car.state"; 
var result= str.split('.'); 

Fiddle Here

+0

ok ... что должен делать OP – ozil

+0

@ozil Пусть OP решит, не так ли? –

+0

Я думаю, что дать полный ответ более подходит – ozil

1

Моя интерпретация вопроса

  • разделить строку
  • присоединиться первые степени п элементов с .

var str = "Fy 2002.car.state", 
 
    a = str.split('.'); 
 

 
function split(a, index) { 
 
    if (index) { 
 
     a[0] += '.' + a.splice(1, index).join('.'); 
 
    } \t \t \t 
 
    document.write('<pre>' + index + ' ' + JSON.stringify(a, 0, 4) + '</pre>'); 
 
} 
 

 
split(a.slice(0), 0); 
 
split(a.slice(0), 1); 
 
split(a.slice(0), 2);

+0

есть дополнительные точки в результатах ... –

+0

@PavelGatnar, см. Править, thx –

+0

да. То, что я точно ожидаю. логика работает для меня. –