1

我正在尝试过滤一个数组以使用我得到的结果构建另一个数组。但是到目前为止,我一直在使用 jQuery 的函数组合还没有起作用。所以我会很感激一些关于如何解决这个问题的建议。

这是我正在尝试实现的示例:

这是我的第一个数组:

var data =[salt.1200, salt.1100, salt.1000, salt.0900, salt.0800, salt.0700, current.1200, current.1100, current.1000, current.0900, current.0800, current.0700];

我想从这个数组中构建两个不同的数组,一个用于盐,一个用于当前。

我尝试使用带有 jQ​​uery grep 函数的 for 循环并进行拆分,但这没有用。

var plotsArray = [];
        for (var i=0; i<data.length; i++){
            plotsArray = jQuery.grep(data, function(a){
                return (a.split(".") == 'salt')
            });
        }
        console.log('plotsArray: '+plotsArray);

另外,我一直在尝试做的是读取字符串的第一部分直到点,然后根据该结果构建一个数组。使用例如数组过滤器,但直到点为止我还没有弄清楚如何阅读。

我将不胜感激有关如何解决此问题的任何指导。

问候,

4

7 回答 7

3

我会沿着这条线做更多的事情。

var plotsArray = [];
        for (var i=0; i<data.length; i++){
            if(data[i].indexOf('salt') >= 0){
            plotsArray.push(data[i]);           
        }
        console.log('plotsArray: '+plotsArray);
于 2013-01-04T13:00:54.240 回答
1

使用你的代码我会做:

var plotsArray = [];

plotsArray.push($.grep(data, function(n,i){
   return n.split(".")[0] !== "salt";
}));

请确保数据数组包含字符串。

于 2013-01-04T13:08:36.003 回答
1

在这里做出改变——

return (a.split(".")[0] == 'salt')

并且您的代码将起作用。工作小提琴 - http://jsfiddle.net/Lh8Pt/

于 2013-01-04T13:03:48.040 回答
1

我认为您的测试应该是:

return a.split(".")[0] == "salt";

或者

return a.indexOf("salt") == 0;

后者可能会更好,因为在其中一个数组值不包含点的情况下它不会出错。

于 2013-01-04T13:04:55.663 回答
0
var saltArray = [];
    var currentArray = [];
    for(var i=0;i<data.length;i++){

        if(data[i].split('.')[0]=='salt'){

            saltArray.push(data[i]);

        }else{
           currentArray.push(data[i]);
         }
    }
于 2013-01-04T13:05:05.823 回答
0

使用filter/map方法,您可以执行以下操作:

var current = [], 
    salt = data.filter(
            function(a){
              var x = a.split('.'); 
              if (/current/i.test(x[0])) { this.push(x[1]); } 
 //                                        ^ = current
              return /salt/i.test(x[0])
             }, current
 //             ^ context
           ).map(
             function(b){
               return b.split('.')[1]}
           );

MDN 关于 Array.filter

于 2013-01-04T13:15:58.520 回答
0

试试这个:http: //jsfiddle.net/afEGC/

var data = ['salt.1200', 'salt.1100', 'salt.1000', 'salt.0900', 'salt.0800', 'salt.0700', 'current.1200', 'current.1100', 'current.1000', 'current.0900', 'current.0800', 'current.0700'];

var asplit = new Array();
asplit['salt'] = new Array();
asplit['current'] = new Array();

​jQuery.each(data, 
          function(index,value)
             {
                 var split_value = value.split('.');
                   asplit[split_value[0]].push(split_value[1]);                                 
             });

console.log('salt: ' + asplit['salt']);

console.log('current: ' +​​​​​​​​​​​​​​​​ asplit['current']);​​​​
于 2013-01-04T13:16:40.013 回答