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

そして、この配列から2つの異なる配列を作成したいと思います。1つはsalt用で、もう1つはcurrentからのものです。

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

また、私がやろうとしているのは、文字列の最初の部分をドットまで読み取り、その結果に基づいて配列ベースを構築することです。たとえば配列フィルターを使用しますが、ドットまで読み取る方法がわかりません。

これを解決する方法についてのガイダンスをいただければ幸いです。

よろしく、

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

私はあなたのテストが次のいずれかであるべきだと思います:

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

また

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

配列値の1つにドットが含まれていない場合でもエラーが発生しないため、後者の方が適している場合があります。

于 2013-01-04T13:04:55.663 に答える
1

ここで変更を加えます-

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

そしてあなたのコードは動作します。ワーキングフィドル-http://jsfiddle.net/Lh8Pt/

于 2013-01-04T13:03:48.040 に答える
1

あなたのコードを使用して私はします:

var plotsArray = [];

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

また、データ配列に文字列が含まれていることを確認してください。

于 2013-01-04T13:08:36.003 に答える
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]}
           );

Array.filterに関するMDN

于 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 に答える