2013-08-28 44 views
8

我是新來的nodejs和mongodb。我的問題是我有以下類型如何從JSON數組中刪除元素

{ 
_id: 199, 
name: 'Rae Kohout', 
scores: [ 
    { type: 'exam', score: 82.11742562118049 }, 
    { type: 'quiz', score: 49.61295450928224 }, 
    { type: 'homework', score: 28.86823689842918 }, 
    { type: 'homework', score: 5.861613903793295 } 
] 
} 

在這裏,我想比較分數的類型「功課」,並刪除它有最低的功課score.To解決這個問題,我寫的

一些代碼的JSON
var low = ''; 
for(var i=0;i<doc.scores.length;i++) 
{ 
if(doc.scores[i].type == 'homework'){ 
    if(low == ''){ 
     low = doc.scores[i].score; 
    } 
    if(doc.scores[i].score > low){ 
    console.log("index for lowest score is " + i); 
    low = ''; 
    } 
} 
} 

現在我可以找到最低分數的索引,並且希望刪除該索引處的值。我試圖使用Array.splice()方法,但只適用於Array。任何人都可以幫我解決它嗎?

+0

你想要什麼最終的結果是? 'scores'是一個數組,所以你可以在它上面使用拼接。 – dc5

回答

27

使用splice像這樣:

doc.scores.splice(index, 1); 
+2

+1這是從數組中移除元素的正確方法。 – Chad

+0

「當使用兩個或多個參數start,deleteCount和(可選)item1,item2等調用拼接方法時,從數組索引start開始的數組的deleteCount元素被參數item1,item2等替換。包含已刪除元素的數組對象(如果有)將返回。「 - http://www.ecma-international.org/ecma-262/5.1/#sec-15.4.4.12 –

+0

如果我想移動它,該怎麼辦?到另一個json變量? –

2

剪接()方法通過去除現有元件和/或添加新元素改變的數組的內容。

,如果你想從指數3.取出1元試試這個

var myArray = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon']; 
var removed = myArray.splice(3, 1); 

// removed is ["mandarin"] 
// myArray is ["angel", "clown", "drum", "sturgeon"]