2016-03-29 11 views
0

私はすでに改行で分割したCSVファイルを持っていますが、改行のカンマでさらに分割して私に3つのことを与えています探して、後でプログラムで使用するためにそれらの名前を付けました。私が探しているのは、オブジェクトの1つが特定の値と一致する場合にアイテムを削除することです。条件の配列からオブジェクトを削除する

var values=[]; 
var output=""; 
for(i = 0; i < csv_split.length; i++){ 
    csv_split[i] = csv_split[i].split(',') //Splits the csv file that's already split by new line by commas 
       values[i]={} 
    values[i].Name=newline_split[i][1]; //finds the second object and names it values.name 
    values[i].Rev=newline_split[i][2]; //finds the third object and names it values.rev 
    values[i].URL=newline_split[i][9]; //finds the eighth object and names it values.url 
} 

これは後で使用されるので、私が探している値のリストを得ることができます。私は、forループ最初にこのコードを修正されたなかったので、何

for (i=0; i < values.length; i++){ 
    output += values[i].Name + ','; 
    output += values[i].Rev + ','; 
    output += values[i].URL+ ','; 
    output += "\n\n||||||"; 
} 

:この背後にある考え方は、values.Revが「NO ACCESS」にマッチした場合、それは全体を削除するというものであった

if (values[i].Rev == "NO ACCESS") { 
    csv_split[i].splice(0,1); 
} 

csv_split [i]。後で出力に表示されないようにします。

values.Revが "NO ACCESS"と一致するかどうかに関係なく、スクリプトを実行すると出力全体が表示されるようになりました。私はこれで何が欠けていますか?

+0

条件が満たされていない場合、CSVライン全体を削除することを意味しますか? –

+0

条件が満たされるたびに、csv_splitの行全体を削除します。たとえば、csv_split [1]の値が[1] .Revの値が "NO ACCESS"の場合csv_split [1]からすべての値を削除して、後で2番目のコードボックスに表示されるようにしたいvalues.Rev = "NO ACCESS"の行は表示されません –

答えて

2

filterメソッドを使用すると、これをはるかに簡単に行うことができます。

var finalArr = values.filter(function(val) { return val.Rev != "NO ACCESS"; }); 

これは、アクセス権のあるすべての配列を提供するはずです。

+0

JavaScript関数を使用するサードパーティ製のソフトウェアで作業していますが、フィルタ関数を含む特定の関数が有効になっていないようです。私は手動でフィルタ関数を作成することはできますが、フィルタ関数のソースコードがどこにあるのかわかりません。 javascriptにある関数のソースコードを見つけるためのオンラインリソースはありますか? –

+0

私には分かりませんが、グーグルで試してみることができます。おそらくhttps://www.javascript.com/で始めるのがよいでしょう。組み込み関数を無効にしているものは何ですか? – senschen

+1

[あなたのブラウザは少なくともこの高さでなければなりません](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter#AutoCompatibilityTable) – James

関連する問題