簡體   English   中英

從javascript對象設置和檢索值

[英]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.

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