簡體   English   中英

javascript typescript 創建一個 object

[英]javascript typescript create a object

我有一個像這樣的屬性“data.property”=“16165456”..我試着像這樣創建一個 object

data {
   property : "16"
}

我使用拆分和循環但不起作用


    this.returnKey(model, this.to['pro1'], this.model[this.to['pro2']])
returnKey(model: any, name: string, value: string) {

        let nameParts = name.split("."),
            currentObject = model;
        for (let i in nameParts) {
            let part = nameParts[i]
            currentObject[part] = currentObject[part]

            this.currentObject = currentObject[part];
        }

        let part2 = nameParts[1];
        currentObject = value;
    }

幾個問題:

  • currentObject[part] = currentObject[part]是一個沒有完成任何事情的語句。 當該屬性尚不存在時,您想指出要分配的內容,所以這樣做:

     currentObject[part] = currentObject[part]?? {};
  • this.currentObject是一個屬性,不是同名變量。 this在這里不合適。 只需分配給currentObject

  • 變量part2獲得一個值,但未使用。 所以這沒有完成任何事情。

  • 最終賦值currentObject = value不會影響model object,只會影響那個局部變量。 所以這個聲明也沒有持久的效果。

  • for循環迭代次數過多。 您需要提前停止一步,這樣您仍然可以將該value分配給需要獲取它的父 object 的屬性。

以下是對所有這些問題的更正:

 function returnKey(model, name, value) { let nameParts = name.split("."), key = nameParts.pop(), // extract the last property currentObject = model; for (let i in nameParts) { // Now we will iterate one time less let part = nameParts[i]; // Initialise the property with `{}` when it is new: currentObject[part] = currentObject[part]?? {}; currentObject = currentObject[part]; } // Assign to the deepest key, so the model will get it: currentObject[key] = value; } // Demo: let name = "data.numeroApplication"; let value = "16165456"; let model = {}; returnKey(model, name, value); console.log(model); // Model has mutated

暫無
暫無

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

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