0

可能重复:
在 JavaScript 中的对象的任何级别上获取元素

每个人都有美好的一天!我真的对这个感到困惑:

我有一个对象:

var someObject = {}

所以,接下来我想设置这样的属性:

someObject['errors.email'] = value1;

someObject['errors.password'] = value2;

之后有一个对象:

{
   errors: {
              email: 'some value 1'
              ,password: 'some value 2'
           }
}

有可能用一些语法糖吗?

最甜蜜的问题是

function setValueByPath(obj, path, value) {
var pathArray = path.split('.');
    var pointer = obj;
    var i = 0, l = pathArray.length-1, prop;

    for (; i<l; i++) {
        prop = pathArray[i];
        pointer = pointer.hasOwnProperty(prop) ? pointer[prop] : (pointer[prop] = {});
    }

    pointer[pathArray[i]] = value;
}

感谢 Roman Ziva 的建议(见这里http://jsperf.com/autocreate-obj

一个例子见这里http://jsfiddle.net/zafod/KxesD/

4

1 回答 1

0

您可以像这样设置属性,

var errors = someObject['errors'] = {};
errors['email'] = value1;
errors['password'] = value2;

别的,

someObject['errors'] = { "email": value1, "validation": {"fatal": {"email": value2}}}

对此没有其他最佳选择。

于 2012-11-26T11:27:23.370 回答