繁体   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