2016-03-29 17 views
0

Ich versuche, an einige JSON-Objekte keine neuen Eigenschaften anzuhängen. Wie kann ich das machen?Wie fügt man einem JSON-Array eine neue Eigenschaft hinzu?

Zum Beispiel, das ist mein JSON-Array:

var eventsArray; 

    eventsArray = [ 

    { 
     "title" : "Marco 1", 
     "user": "Marco", 
     "start" : "2016-01-12T16:00:00-05:00", 
     "end" : "2016-01-12T17:00:00-05:00" 
    }, { 
     "title" : "Marco 2", 
     "user": "Marco", 
     "start" : "2016-01-12T10:00:00-05:00", 
     "end" : "2016-01-12T12:00:00-05:00" 
    }, { 
     "title" : "Marta 1", 
     "user": "Marta", 
     "start" : "2016-01-12T09:00:00-05:00", 
     "end" : "2016-01-12T10:00:00-05:00" 
    }, { 
     "title" : "Marta 2", 
     "user": "Marta", 
     "start" : "2016-01-13T09:00:00-05:00", 
     "end" : "2016-01-13T10:00:00-05:00" 
    }, { 
     "title" : "Veronica 1", 
     "user": "Veronica", 
     "start" : "2016-01-12T13:00:00-05:00", 
     "end" : "2016-01-12T14:00:00-05:00" 
    }, { 
     "title" : "Veronica 2", 
     "user": "Marco", 
     "start" : "2016-01-11T13:00:00-05:00", 
     "end" : "2016-01-11T14:00:00-05:00" 
    } 

    ]; 

Und dann brauche ich eine neue Eigenschaft, wie zum Beispiel "Farbe" hinzufügen: der Benutzer Veronica, das heißt "rot":

var eventsArray; 

eventsArray = [ 

{ 
    "title" : "Marco event 1", 
    "user": "Marco", 
    "start" : "2016-01-12T16:00:00-05:00", 
    "end" : "2016-01-12T17:00:00-05:00" 
}, { 
    "title" : "Marco event 2", 
    "user": "Marco", 
    "start" : "2016-01-12T10:00:00-05:00", 
    "end" : "2016-01-12T12:00:00-05:00" 
}, { 
    "title" : "Marta event 1", 
    "user": "Marta", 
    "start" : "2016-01-12T09:00:00-05:00", 
    "end" : "2016-01-12T10:00:00-05:00" 
}, { 
    "title" : "Marta event 2", 
    "user": "Marta", 
    "start" : "2016-01-13T09:00:00-05:00", 
    "end" : "2016-01-13T10:00:00-05:00" 
}, { 
    "title" : "Veronica event 1", 
    "user": "Veronica", 
    "start" : "2016-01-12T13:00:00-05:00", 
    "end" : "2016-01-12T14:00:00-05:00", 
    "color" : "red" 
}, { 
    "title" : "Veronica event 2", 
    "user": "Veronica", 
    "start" : "2016-01-11T13:00:00-05:00", 
    "end" : "2016-01-11T14:00:00-05:00", 
    "color" : "red" 
} 

]; 

Hier oben habe ich nur (manuell) die "Farbe": "rot" nur auf die Objekte mit "Benutzer" === "Veronica" (die letzten beiden) hinzugefügt. Wie kann ich das über JavaScript machen?

habe ich versucht, einige Möglichkeiten, ohne Erfolg, wie zum Beispiel:

eventsArray[4].color = "red"; 
eventsArray[5].color = "red"; 

oder:

eventsArray.user["Veronica"].color = "red"; 
eventsArray.user["Veronica"].color = "red"; 

ist von ein paar Tagen habe ich JSON verwenden lerne.

Bitte beachten Sie, dass es in diesem speziellen Fall keine Probleme mit Objekten mit unterschiedlichen Eigenschaften gibt: Mein Programm wird nicht explodieren! : P

Vielen Dank.

+0

Es funktioniert https://jsbin.com/mosuyomuvi/edit?html,js,console – Grievoushead

+0

einfach, versuchen Sie diese 'eventsArray.forEach (function (item) {if (item.title.indexOf ('Veronica ')> -1) item.color =' red ';}) ' – kriznaraj

+1

Dies ist kein * JSON *. Es ist ein Javascript-Array mit Objekten darin. JSON ist ein eng verwandtes Serialisierungsformat. – deceze

Antwort

3

Es gibt eine Reihe von Möglichkeiten, wie Sie dies tun können.

Hier ist eine einfache Möglichkeit:

eventsArray.forEach(function(event) { 
    if(event.user == 'Veronica') event.color = 'red'; 
}); 

Natürlich werden Sie wahrscheinlich diese für andere Benutzer und Farben machen wollen. So wäre es am besten, es in eine Funktion zu verallgemeinern:

function setUserColor(events, user, color) { 
    events.forEach(function(event) { 
     if(event.user == user) event.color = color; 
    }); 
} 

Dann können Sie es so nennen:

setUserColor(eventsArray, 'Veronica', 'red'); 

Und nun können Sie das gleiche für andere Benutzer auch tun:

setUserColor(eventsArray, 'Marta', 'green'); 
1

Hier ist eine grundlegende.

for(var i = 0; i < eventsArray.length; i++){ 
    if(eventsArray[i].user === "Veronica" { 
     eventsArray[i].color = "red"; 
    } 
} 
Verwandte Themen