2016-03-29 24 views
0

私はいくつかのJSONオブジェクトに新しいプロパティを追加しようとしています。どうやってやるの?JSON配列に新しいプロパティを追加するには?

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

    ]; 

そして私は、このような「色」として、新しいプロパティを追加する必要があります:ユーザーヴェロニカに「赤」、すなわち:

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

]; 

例えば、これは私のJSON配列であります

ここでは、「ユーザー」===「Veronica」(後者の2つ)を持つオブジェクトにのみ、「色」:「赤」を追加しました。私はJavaScriptを使ってこれをどのようにすることができますか?

私のような、成功せず、いくつかの方法を試してみました:

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

か:

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

は、私はJSONを使用することを学んでいる、数日からです。

この特定のケースでは、プロパティの異なるオブジェクトが問題にならないことに注意してください:私のプログラムは爆発しません! :P

ありがとうございます。

+0

それは働いてhttps://jsbin.com/mosuyomuvi/edit?html,js,console – Grievoushead

+0

単に、{)この 'eventsArray.forEach(機能(アイテムを試してみてください(item.title.indexOf( 'ヴェロニカ場合')> -1)item.color =' red ';}) ' – kriznaraj

+1

これは* JSON *ではありません。内部にオブジェクトを持つJavascript配列です。 JSONは密接に関連したシリアライゼーション形式です。 – deceze

答えて

3

これを行う方法はたくさんあります。

ここに1つの簡単な方法です:もちろん

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

あなたはおそらく、他のユーザーとの色のためにこれを行うことになるでしょう。だから、関数に、それを一般化するのがベストです:

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

その後、あなたはこのようにそれを呼び出すことができます。

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

そして今、あなたはあまりにも他のユーザーのために同じことを行うことができます。

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

これは基本的なものです。

for(var i = 0; i < eventsArray.length; i++){ 
    if(eventsArray[i].user === "Veronica" { 
     eventsArray[i].color = "red"; 
    } 
} 
関連する問題