2013-01-04 91 views
0

我想过滤一个数组来构建另一个数组,并获得结果。但是,我一直使用jQuery的功能组合到目前为止还没有工作。所以,如果能解决这个问题,我将不胜感激。如何从使用javascript的另一个数组的元素创建数组

这里是我想要实现的例子:

这是我的第一个数组:

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

而从这个数组我想建立两个不同的阵列,一个用于盐和一个来自当前。

我曾尝试使用一个与它和分裂一个jQuery的grep功能循环,但没有奏效。

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

而且,我一直在努力做的就是读取字符串的第一部分,直到点,然后建立该结果数组基地。使用例如数组过滤器,但我没有弄清楚如何阅读,直到点。

我会明白如何解决这个任何指导。

Regards,

+0

是否'data'包含字符串? – pimvdb

+0

也没有a.split()返回一个数组? a.split(“。”)[0]也许? – NickSlash

+0

@pimvdb,数据包含字符串。 – Probandot

回答

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

多米尼克,谢谢。你的答案是我看到的第一个答案,也是我尝试过的第一个答案;它有一个愉快的周末。 – Probandot

+0

没有问题祝你好运 –

1

我认为你的测试值应为:

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

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

,因为它不会在一次错误指出的一个,后者可能会更好数组值不包含点。

+0

第二个工作,第一个与问题有同样的问题,没有指定索引,因此它将整个数组与字符串进行比较,并返回false(除非分割返回数组只有一个项目) – NickSlash

+0

我的错误。我的意思是添加[0]索引,然后一定忘记它。现在添加。 – JLRishe

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

使用你的代码,我会做:

var plotsArray = []; 

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

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

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

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']);​​​​ 
相关问题