javascript 打字稿创建一个对象
javascript typescript create a object
我有一个像这样的 属性 “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;
}
几个问题:
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
我有一个像这样的 属性 “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;
}
几个问题:
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