簡體   English   中英

使用數組符號將javascript中的值分配給子對象字段

[英]assigning value in javascript to sub-object field using array notation

我打算像這樣設置對象的字段值

 $scope[nameOfField]=value;

如果nameOfField只是字段名稱,則可以使用。

但是,如果我在$ scope對象中定義“ subObject”:

$scope.subObject={};
var nameOfField='subObject.someSubField';

$scope[nameOfField]=12345;

這行不通。 顯然,我不能像這樣直接解決子對象字段。 但是,我確實需要對子對象字段使用nameOfField方法,並感謝如何使它起作用的提示。 我無法預測subObject是否將出現在nameOfField中-它既可以是name字段,又可以是subObject.someSubField。

編輯:與問題的不同之處在於使用字符串鍵訪問嵌套的JavaScript對象是我不僅需要訪問對象的值,還需要對其進行修改。

那么您當前的代碼將導致

$scope['subObject.someSubField']=12345;

這將是語法錯誤。 正確的是

$scope[nameOfField1][nameOfField2]=12345;

因此,您需要一個函數來對此進行歸檔。 這里是一個示例(顯然,必須擴展它以支持僅2個級別的更多級別):

var scope = {};
function setValue(scopeString, val){
    var match = /(\w+)\.(\w+)/.exec(scopeString);
    if(!scope[match[1]]) //create if needed
      scope[match[1]] = {};
    scope[match[1]][match[2]] = val;
}
function getValue(scopeString){
    var match = /(\w+)\.(\w+)/.exec(scopeString);
    return scope[match[1]][match[2]];
}
setValue('lvl1.lvl2', 1);
console.log(getValue('lvl1.lvl2'));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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