2017-02-23 73 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';我會更新我的回答 –