我有這樣的屬性“data.property”=“16165456”..我嘗試創建這樣的物件
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;
}
uj5u.com熱心網友回復:
幾個問題:
currentObject[part] = currentObject[part]是一事無成的陳述。當該屬性尚不存在時,您需要指出要分配的內容,因此請執行以下操作:currentObject[part] = currentObject[part] ?? {};this.currentObject是一個屬性,而不是同名的變數。this在這里不合適。只需分配給currentObject.變數
part2得到一個值,但它沒有被使用。所以這并沒有完成任何事情。最后的賦值
currentObject = value不會影響model物件,只會影響那個區域變數。所以這個宣告也沒有持久的影響。for回圈重復了太多次。您需要提前停止一步,以便您仍然可以將 分配給value需要獲取它的父物件的屬性。
以下是對所有這些問題的更正:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/436733.html
標籤:javascript 有角度的 目的 类型
