2016-03-29 32 views
0

Bazı JSON nesnelerine yeni özellikler eklememeye çalışıyorum. Bunu nasıl yapabilirim? Örneğin JSON dizisine yeni bir özellik nasıl eklenir?

, bu benim JSON dizidir:

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" 
    } 

    ]; 

Sonra böyle "renk" olarak, yeni bir özellik eklemeniz gerekir: yani kullanıcıya "kırmızı" Veronica:

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" 
} 

]; 

Yukarıda "renk": "kırmızı" kelimesini sadece "elle" (manuel olarak) ekledim: "kullanıcı" === "Veronica" (ikinci ikisi). Bunu JavaScript ile nasıl yapabilirim?

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

ya:

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

Ben JSON kullanmayı öğreniyorum birkaç gün mı

ben gibi başarılı olamadı bazı yolları denedik.

Bu özel durumda, farklı özelliklere sahip nesnelerin bulunmasında herhangi bir sorun olmayacağını lütfen unutmayın: Programım patlamaz! : P

Teşekkür ederiz.

+0

Çalışıyor https://jsbin.com/mosuyomuvi/edit?html,js,console – Grievoushead

+0

Basitçe, {) bu 'eventsArray.forEach (function (madde denemek (item.title.indexOf ('Veronica ise ')> -1) item.color =' kırmızı ';}) ' – kriznaraj

+1

Bu, * JSON * değildir. İçindeki nesneleri içeren bir Javascript dizisi. JSON yakından ilgili bir serileştirme biçimidir. – deceze

cevap

3

Bunu yapmanın birkaç yolu vardır. Tabii

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

muhtemelen diğer kullanıcılar ve renkler için bunu yapmak isteyecektir:

Burada tek bir kolay yolu.

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

Sonra böyle diyebilirsin: Yani bir fonksiyonun içine genellemek iyi olurdu

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

Sizler de diğer kullanıcılar için aynı şeyi yapabilirsiniz:

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

İşte temel olanı.

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