我刚开始使用javascript并想问一个问题(很明显:P) 我编写了两个方法,一个从对象获取值,基于其数据路径(数据路径是对象内的结构,如:“object.subObject.anotherSubObject.property”),另一个将值设置为a基于数据路径的对象。
以下是用typescript编写的代码:
public getValueFromObject(object:any, path:string|string[], thisArg:any = null):any {
thisArg = thisArg == null ? this : thisArg;
var value:any = null;
if (object == null || object == undefined || object == "undefined")
return value;
if (path == null || path == undefined || path == "undefined" || path == "")
return value;
if (typeof path == "string" && !Array.isArray(path)) {
path = (<string>path).split(".");
}
var currPath:string = path[0];
if (path.length > 1 && object.hasOwnProperty(currPath)) {
value = thisArg.getValueFromObject(object[currPath], path.slice(1), thisArg);
}
else if (object.hasOwnProperty(currPath)) {
value = object[currPath];
}
return value;
}
private setValueToObject(dataObject:any, value:any, dataPath:string|string[], thisArg:any = null):any {
thisArg = thisArg == null ? this : thisArg;
if (dataObject == null || dataObject == undefined || dataObject == "undefined")
return null;
if (dataPath == null || dataPath == undefined || dataPath == "undefined" || dataPath == "")
return null;
if (typeof dataPath == "string" && !Array.isArray(dataPath)) {
dataPath = (<string>dataPath).split(".");
}
var currPath:string = dataPath[0];
if (dataPath.length > 1) {
if (!dataObject.hasOwnProperty(currPath)) {
dataObject[currPath] = {};
}
dataObject[currPath] = thisArg.setValueToObject(dataObject[currPath], value, dataPath.slice(1), thisArg);
}
else {
dataObject[currPath] = value;
}
return dataObject;
}
现在,我想知道,这是一个写得很好的javascript代码,是否有任何库可以做我想要实现的同样的事情?也许lodash?如果有人提供示例代码,我们将非常感激。
提前谢谢。
答案 0 :(得分:-1)
对象使用javascript非常具有可塑性。
启动对象
var myobj = {
var1: 'hello'
}
获取var1
console.log(myobj.var1) // 'hello'
设置var1
myobj.var1 = 'world'
再次获取var1
console.log(myobj.var1) // 'world'
将所有这些结合起来输出“你好世界”。到你的控制台
var myobj = { var1: 'hello' };
console.log(myobj.var1);
myobj.var1 = 'world';
console.log(myobj.var1);
除此之外你的代码看起来还不错。除了养猫之外,还有其他方法。当编程为乐趣时,绝不是一种比另一种方式更好的方法。写出像你为良好实践所做的事情是很好的。您还应该了解更快地改进生产代码的方法。