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