2013-08-28 17 views
8

Jestem nowy dla nodejs i mongodb. Mój problem polega Mam JSON następujące typJak usunąć element z tablicy 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 } 
] 
} 

Tutaj chcę porównać ocenę typu „pracy domowej” i usunąć pracę domową, która ma najniższy score.To rozwiązać ten Pisałem jakiś kod jak

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 = ''; 
    } 
} 
} 

Teraz jestem w stanie znaleźć indeks o najniższym wyniku i chcę usunąć wartości z tego indeksu. Próbowałem użyć metody Array.splice(), ale działa tylko na Array. Czy ktoś może mi pomóc go rozwiązać?

+0

Co chcesz końcowy wynik będzie? 'scores' jest tablicą, dzięki czemu można na niej użyć splice. – dc5

Odpowiedz

27

Zastosowanie splice tak:

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

+1 Jest to właściwy sposób na usunięcie elementu z tablicy. – Chad

+0

"Gdy wywoływana jest metoda splice z dwoma lub więcej argumentami start, deleteCount i (opcjonalnie) item1, item2 itd., Elementy deleteCount tablicy rozpoczynającej się od początku tablicy są zamieniane na argumenty item1, item2, itp. Obiekt tablicy zawierający usunięte elementy (jeśli istnieją) jest zwracany. "- http://www.ecma-international.org/ecma-262/5.1/#sec-15.4.4.12 –

+0

Co należy zrobić, jeśli chcę go przenieść do innej zmiennej json ?? –

2

składania() sposób zmienia zawartość tablicy poprzez usunięcie elementów i/lub dodania nowych elementów.

jeśli chcesz usunąć 1 elementu z indeksu 3. spróbować

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

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