【问题标题】:split and seperate based on specific values - jQuery根据特定值拆分和分离 - jQuery
【发布时间】:2015-12-15 07:57:28
【问题描述】:

基本上我的字符串是这样的。

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 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|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|0|0|0 结尾的项目,还是要按项目的结尾对项目进行排序或对项目进行分组?

标签: jquery split


【解决方案1】:

您可以迭代并将值放在两个单独的数组中

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

【讨论】:

  • 谢谢。但我无法遵循这条线if (item.trim().length === 0) return false;
  • 你在字符串的末尾有一个^,这意味着你在拆分时会得到一个空索引。该行仅删除数组中具有空字符串作为值的所有索引。
【解决方案2】:

试试这个,

        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));

【讨论】:

    【解决方案3】:

    试试这个

    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])
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-14
      • 2021-01-30
      • 2019-05-06
      • 2019-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多