2017-02-23 9 views
0

私はオブジェクトのJavaScript配列を持っています。ボタンをクリックするとオブジェクトが配列にプッシュされ、それをグリッドのデータソースとして使用します。私が直面している問題は、配列の最初のオブジェクトはすべて空白の値であり、グリッドをロードすると、空のオブジェクトのために空の行があるということです。ロードする前に空のオブジェクトを配列から削除するにはどうすればいいですかグリッド?ここで 空のオブジェクトを配列から削除するには?

は配列です
var gridData = { 
    step3GridData: [{ Description: "", Color: "", SqSiding: "" }] 
}; 

と、私は私が結合する前に、空のオブジェクトを削除する必要がボタンの上に私が述べたように、アレイ

gridData.step3GridData.push({ Description: $("#InfoInsul").text(), Color: $("#ddGetInsulationMaterialColor").val(), SqSiding: $("#ddInsulationSquares").val() }); 

LoadStep3(gridData.step3GridData); 

に新しいオブジェクトをプッシュしていますクリックし

アレイにロードします。これをどうやってやりますか?

+1

新しいオブジェクトが塗りつぶされていない限り、プッシュしないでください。 –

+0

@ibrahimmahrir、空のオブジェクトがあり空の文字列を返すので、オブジェクトは常に埋められませんか? – Chris

+0

私はその性質を意味しました!私は答えを投稿するつもりです! –

答えて

0

まず、このようなあなたの配列を初期化:

var gridData = { 
    step3GridData: [] // empty array 
}; 

その後、新しいオブジェクトを推進しているとき、入力は次のように満たされているかどうかを確認:

var desc = $("#InfoInsul").text();    // this seems unnecessary as this is not left to the user to fill (if I'm assuming right then don't check if this is empty) 
var col = $("#ddGetInsulationMaterialColor").val(); 
var sqs = $("#ddInsulationSquares").val(); 
if(desc.length && col.length && sqs.length) { // if desc is not empty and col is not empty and sqs not empty then add an object 
    gridData.step3GridData.push({ Description: desc, Color: col, SqSiding: }); 
} 

ユーザーが何かを空にした場合、オブジェクトはプッシュされないため、空のオブジェクトはありません。 elseを使用して、ユーザーが入力を空白のままにしたというメッセージを警告することができます。

+0

ありがとう、これは働いた – Chris

1

spliceを使用してください。あなたはその位置が不明な場合は、

if (gridData.length && Object.keys(gridData[0]).length === 0) { 
    gridData.splice(0, 1); 
} 

あなたは、配列を横断し、最初の空のオブジェクト削除することができます:あなたが確信している、それは常に配列の最初の項目である場合は、行うことができます

for (const [idx, obj] of gridData.entries()) { 
    if (Object.keys(obj).length) === 0) { 
     gridData.splice(idx, 1); 
     break; 
    } 
} 
+0

スプライスが最初の行を処理して削除しましたが、さらにオブジェクトを追加すると最初のオブジェクトが削除され続けました。グリッドには常に新しいオブジェクトしか表示されません – Chris

+0

うーん、おそらく 'スプライス(splice)私は私の答えを更新する –

関連する問題