簡體   English   中英

將動態屬性添加到 javaScript object 中的現有子屬性

[英]Add dynamic property to existing child properties in javaScript object

我知道這聽起來很簡單,但在這種情況下尤其如此。 假設我有一個 object

let garageForm = {}

我知道如果我想添加屬性,我可以使用以下方法

Object.defineProperty(params...)
Obj.property=value
Obj[prop]=value

如果我使用最后一種方法添加屬性,它可以正常工作,例如

let key='garage'
let garageDetails = {
    nameEnglish:'Mirqab',
    others:'someProps',
}
garageForm[key]=garageDetails

//outputs of garageForm is as follows
garage: {nameEnglish: "Mirqab", others: "someProps"}

現在真正的問題在這里,我想將動態屬性添加到我的garageForm object 的garage屬性中,如果我使用上面相同的方法,我不會得到我想要的結果

let ownerKeyName = 'garage.owner'
let ownerValue = {name: 'foo',phone: '123'}
garageForm[ownerKeyName] = ownerValue

現在如果打印我的garagForm object 的值,它顯示如下

{garage: {…}, garage.owner: {…}}

而我希望我的結果看起來像這樣

garage: {nameEnglish: "Mirqab", others: "someProps", owner: {…}}

這意味着我希望新添加的屬性是garageForm.garage而不是garageForm本身。

我怎樣才能達到我需要的 output 提前謝謝

你可以這樣做:

let garageDetails = {
    nameEnglish:'Mirqab',
    others:'someProps',
}
const garageForm = { garage: garageDetails };
garageForm.garage.owner = {name: 'foo',phone: '123'};

如果您需要動態值:

let garageDetails = {
    nameEnglish:'Mirqab',
    others:'someProps',
}
const key='garage';
const garageForm = {};
garageForm[key] = garageDetails;

const ownerKey = 'owner';
garageForm[key][ownerKey] = {name: 'foo',phone: '123'};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM