如何使用javascript从另一个数组的元素创建一个数组

时间:2013-01-04 12:52:47

标签: javascript jquery

我正在尝试过滤一个数组以构建另一个数组,并得到我得到的结果。但到目前为止,我一直在使用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];

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

我曾尝试在其上使用带有jQuery 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);

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

我将很感激如何解决这个问题。

此致

7 个答案:

答案 0 :(得分:2)

我会做更多的事情。

var plotsArray = [];
        for (var i=0; i<data.length; i++){
            if(data[i].indexOf('salt') >= 0){
            plotsArray.push(data[i]);           
        }
        console.log('plotsArray: '+plotsArray);

答案 1 :(得分:1)

在此处进行更改 -

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

您的代码将有效。 工作小提琴 - http://jsfiddle.net/Lh8Pt/

答案 2 :(得分:1)

我认为你的测试应该是:

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

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

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

答案 3 :(得分:1)

使用你的代码我会这样做:

var plotsArray = [];

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

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

答案 4 :(得分: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]);
         }
    }

答案 5 :(得分: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 about Array.filter

答案 6 :(得分: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']);​​​​