0

重複の可能性:
Javasscriptのオブジェクトの任意のレベルで要素を取得します

みんなにとって良い日です!私はこれと本当に混乱しています:

私はオブジェクトを持っています:

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;
}

アドバイスをくれたRomanZivaに感謝します(ここ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 に答える