2015-12-15 3 views
0

В основном моя строка выглядит так.разделены и разделены на конкретные значения - jQuery

568|896|2015-12-14 13:43:05||1|6666698|text1|999969|624|0|1|0|1^696|982|2015-11-14 13:43:05||2|6666695|text2|899969|634|0|0|0|0^147|111|2015-10-14 13:43:05||3|6666694|text3|799969|644|0|0|0|0^025|558|2014-09-14 13:43:05||4|6666693|text4|699969|654|0|1|0|1^925|777|2014-08-14 13:43:05||5|6666692|text5|599969|664|0|1|0|1^ 

Тогда я spliting этой строки, ^ характера

var allvalues = $('#allvalues').val(); 
var spval = allvalues.split('^'); 

console.log(spval[0])+"<br>"; 
console.log(spval[1])+"<br>"; 
console.log(spval[2])+"<br>"; 
console.log(spval[3])+"<br>"; 
console.log(spval[4])+"<br>"; 

Теперь это даст

568|896|2015-12-14 13:43:05||1|6666698|text1|999969|624|0|1|0|1 
696|982|2015-11-14 13:43:05||2|6666695|text2|899969|634|0|0|0|0 
147|111|2015-10-14 13:43:05||3|6666694|text3|799969|644|0|0|0|0 
025|558|2014-09-14 13:43:05||4|6666693|text4|699969|654|0|1|0|1 
925|777|2014-08-14 13:43:05||5|6666692|text5|599969|664|0|1|0|1 

Теперь здесь я хочу, чтобы проверить каждый массив после раскола. И хотите отделить массив на основе последних 4 чисел, в которых все 4 числа должны быть [0|0|0|0], в пределах массива, разделенных | символами трубы.

После того, как отдельная я должен получить

696|982|2015-11-14 13:43:05||2|6666695|text2|899969|634|0|0|0|0 
147|111|2015-10-14 13:43:05||3|6666694|text3|799969|644|0|0|0|0 

И

568|896|2015-12-14 13:43:05||1|6666698|text1|999969|624|0|1|0|1 
025|558|2014-09-14 13:43:05||4|6666693|text4|699969|654|0|1|0|1 
925|777|2014-08-14 13:43:05||5|6666692|text5|599969|664|0|1|0|1 

Как этого добиться?

+0

Вы хотите получить новый массив с o nly элементы, заканчивающиеся на '0 | 0 | 0 | 0', или вы хотите отсортировать элементы по их окончанию или группе элементов? –

ответ

3

Вы можете перебирать и положить значения в двух отдельных массивов

var allvalues = $('#allvalues').val(); 
var spval  = allvalues.split('^'); 
var arr2  = []; 
var arr1  = spval.filter(function(item) { 
    if (item.trim().length === 0) return false; 
    if (item.split('|').join('').slice(-4) === "0000") { 
     arr2.push(item); 
     return false 
    } 
    return true; 
}); 

FIDDLE

+0

Спасибо. Но я не мог следовать этой строке 'if (item.trim(). Length === 0) return false;' – Matarishvan

+1

У вас есть '^' в конце строки, то есть вы получите один индекс empy, когда расщепление. Эта строка просто удаляет любые индексы в массиве с пустой строкой в ​​качестве значения. – adeneo

+0

Большое спасибо .... – Matarishvan

1

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

 var test = "568|896|2015-12-14 13:43:05||1|6666698|text1|999969|624|0|1|0|1^696|982|2015-11-14 13:43:05||2|6666695|text2|899969|634|0|0|0|0^147|111|2015-10-14 13:43:05||3|6666694|text3|799969|644|0|0|0|0^025|558|2014-09-14 13:43:05||4|6666693|text4|699969|654|0|1|0|1^925|777|2014-08-14 13:43:05||5|6666692|text5|599969|664|0|1|0|1^"; 
    var spval = test.split('^'); 
    var arr1 = new Array(); 
    var arr2 = new Array(); 
    $.each(spval,function(key,value){ 
     if(value.length >= 4) 
     { 
      var lastFour = value.substring(value.length-8,value.length); 
      if(lastFour == "|0|0|0|0") 
      { 
       arr1.push(value); 
      } 
      else 
      { 
       arr2.push(value); 
      } 
     } 
     else 
     { 
      arr2.push(value); 
     } 
    }); 

    alert(JSON.stringify(arr1)); 
    alert(JSON.stringify(arr2)); 
1

Попробуйте

var str = '568|896|2015-12-14 13:43:05||1|6666698|text1|999969|624|0|1|0|1^696|982|2015-11-14 13:43:05||2|6666695|text2|899969|634|0|0|0|0^147|111|2015-10-14 13:43:05||3|6666694|text3|799969|644|0|0|0|0^025|558|2014-09-14 13:43:05||4|6666693|text4|699969|654|0|1|0|1^925|777|2014-08-14 13:43:05||5|6666692|text5|599969|664|0|1|0|1^' 

var _arr = str.split("^") 

var _outArr1 = []; 
var _outArr2 = []; 
for(var i=0;i<_arr.length;i++) { 
    if(_arr[i].match(/0\|0\|0\|0$/) != null) { 
     _outArr1.push(_arr[i]) 
    } else { 
     _outArr2.push(_arr[i]) 
    } 
} 
Смежные вопросы