0
JSONオブジェクトの配列の新しいデフォルト値のソースとしてJSONオブジェクトを使用しようとしています。JSONオブジェクトのデータをJSONオブジェクトの配列にプッシュ
がvar records=
[{"Key1":"ValueA","Key2":"ValueA","Key3":"ValueA"},
{"Key1":"ValueB","Key2":"ValueB","Key3":"ValueB"}]
var defaultRecord =
{"Key1":"DefaultValue1","Key2":"DefaultValue2","Key3":"DefaultValue3"}
pushNewDefaultRecord()
pushNewDefaultRecord()
changeFirstDefaultRecord("NEW VALUE")
showRecord()
function pushNewDefaultRecord(){
records.push(defaultRecord)
}
function changeFirstDefaultRecord(newValue){
records[2].Key1 = newValue
records[2].Key2 = newValue
records[2].Key3 = newValue
}
function showRecord(){
console.log(JSON.stringify(records))
}
これは、次の配列を生成します:私の最初の試みで、私はこれをしなかった
[{"Key1":"ValueA","Key2":"ValueA","Key3":"ValueA"},
{"Key1":"ValueB","Key2":"ValueB","Key3":"ValueB"},
{"Key1":"NEW VALUE","Key2":"NEW VALUE","Key3":"NEW VALUE"},
{"Key1":"NEW VALUE","Key2":"NEW VALUE","Key3":"NEW VALUE"}]
私は、レコードの配列にプッシュされていたものdefaultRecordオブジェクトが、オブジェクト内のデータではないことに気づきました1つのレコードを更新すると、両方の新しいレコードがその変更を反映するようになりました。
JSON.stringifyを使用してJSON.parseを使用するようにpushNewDefaultRecord関数を変更すると動作しますが、非常に扱いにくいようです。これにアプローチするクリーナーの方法はありますか?
function pushNewDefaultRecord(){
var newDefaultRecord = JSON.parse(JSON.stringify(defaultRecord))
records.push(newDefaultRecord)
}
が生成されます二つの機能で
[{"Key1":"ValueA","Key2":"ValueA","Key3":"ValueA"},
{"Key1":"ValueB","Key2":"ValueB","Key3":"ValueB"},
{"Key1":"NEW VALUE","Key2":"NEW VALUE","Key3":"NEW VALUE"},
{"Key1":"DefaultValue1","Key2":"DefaultValue2","Key3":"DefaultValue3"}]
だから、このすべてのあなたの質問は何ですか? – YouneL
あなたが必要とするたびに新しいデフォルトオブジェクトを返す関数を使うことができます – charlietfl
私はあなたがすでにそれをしていると思います、2番目の 'pushNewDefaultRecord'はあなたがそれを呼び出すたびに新しいデフォルトオブジェクトを作成します。 – YouneL