[英]Setting and retrieveing value from javascript objects
我剛剛開始使用javascript,想問一個問題(顯然:P),我寫了兩種方法,一種基於對象的數據路徑從對象獲取值(數據路徑是對象內的結構,例如: object.subObject.anotherSubObject.property”),另一個根據數據路徑為對象設置值。
這是用打字稿寫的代碼:
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代碼,是否有任何庫可以完成我想要實現的相同功能? 也許羅達? 如果有人提供示例代碼,我將不勝感激。
先感謝您。
使用JavaScript可以使對象具有很好的延展性。
啟動對象
var myobj = {
var1: 'hello'
}
獲取var1
console.log(myobj.var1) // 'hello'
設置var1
myobj.var1 = 'world'
再次獲取var1
console.log(myobj.var1) // 'world'
整合所有內容,將“ hello world”輸出到您的控制台
var myobj = { var1: 'hello' };
console.log(myobj.var1);
myobj.var1 = 'world';
console.log(myobj.var1);
除此之外,您的代碼看起來還不錯。 進行有趣的編程時,“除了給貓咪塗皮之外,還沒有什么方法比其他方法更好”。 像您為進行良好練習所做的那樣寫東西是很好的。 但是,您還應該知道在生產中改進代碼的更快方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.