2017-03-15 7 views
1

これでちょっと立ち寄りました。ネストされた値を連想配列に追加する - JS

私はこのような連想配列があります:私は何をしようとしている

var player = { 
    source: { 
    item1: value, 
    item2: value, 
    item3: { 
     item3-1: value 
    } 
    }, 
    playback: { 
    parameter1: value, 
    parameter2: value, 
    } 
} 

は次のようにplayer.sourceに値を追加します:

player.source.item4.item4-1 = 'something' 

player.sourceがどのように見えるようこれは:

source: { 
    item1: value, 
    item2: value, 
    item3: { 
     item3-1: value 
    }, 
    item4: { 
     item4-1: 'something', 
    }, 
    }, 

ご協力いただきありがとうございます。

+2

「連想配列」のようなものはありませんJavaScriptで。あなたが持っているものはオブジェクトで、それにプロパティを追加しています。 – meagar

答えて

1

私はそれがあまりにも複雑すぎてもうまくいかないのか分かりませんが、うまくいくようです。

var player = {source:{item1:"value",item2:"value",item3:{"item3-1":"value"}},playback:{parameter1:"value",parameter2:"value"}}, 
 
    obj = { 
 
     'item4-1': 'something' 
 
    }; 
 

 
    player.source.item4 = obj; 
 
    console.log(player);

+0

閉じる.. 'source'の下に新しいプロパティ 'item4'を作成し、プロパティを追加したいとします。 – ymdahi

+0

@ymdahi私はそれが過度に複雑になっていることを知っていました。一定。 –

+0

素晴らしい、今これを試して – ymdahi

1

あなたはこのようにそれを行うことができます - ちょうど一般的にオブジェクトにプロパティ/値を追加するための関数を作成します。プロパティがすでに存在する場合は、値を上書きします。

var value = 5; 
 
var player = { 
 
    source: { 
 
    item1: value, 
 
    item2: value, 
 
    item3: { 
 
     "item3-1": value 
 
    } 
 
    }, 
 
    playback: { 
 
    parameter1: value, 
 
    parameter2: value, 
 
    } 
 
} 
 

 
function addProperty(obj, categoryName, value) { 
 
    obj[categoryName] = value; 
 
    return obj; 
 
} 
 

 
addProperty(player.source, "item4", addProperty({}, "item4-1", value)); 
 
console.log(player);

以降のプロパティ/値を追加するには、あなたがそうのようなあなたのオブジェクトに新たに作成されたプロパティにアクセスすることができます

addProperty(player.source.item4, "item4-2", 6); 
addProperty(player.source.item4, "item4-3", 7); 
// etc... 
関連する問題