2013-01-04 114 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']);​​​​ 
相關問題