0

これに似た情報を保存する必要があります:

tag_array['design1']['0'][0]['x'] = 100;
tag_array['design1']['0'][0]['y'] = 100;
tag_array['design1']['0'][0]['w'] = 710;
tag_array['design1']['0'][0]['h'] = 332;

これはPHPの場合は機能しますが、JavaScriptでは機能しません。

適切なjavascript構文で同じ配列を作成するにはどうすればよいですか?

4

2 に答える 2

2

PHP では、親要素も作成されるため、これを行うことができます (実際には警告がスローされます)。JavaScript では、親要素が存在しないためエラーになります。

そのようにする代わりに、次のように一度にすべてを作成してみてください。

var tag_array = {
    design1: {
        '0': [{
            x: 100,
            y: 100,
            w: 710,
            h: 332
        }]
    }
};

これにより、必要な構造が得られます。

更新0: 1 番目が文字列である可能性があるという事実を反映するために、回答が更新されました。

于 2012-09-05T18:24:15.187 に答える
-1

プログラムで実行したい場合は、JavaScript でこのタイプの構造が必要になるためです。

tag_array = {};
tag_array['design1'] = {};
tag_array['design1']['0'] = [];
tag_array['design1']['0'][0] = {};
tag_array['design1']['0'][0]['x'] = 100;

prototypeオブジェクト/配列構造を作成する関数を作成できます

Object.defineProperty(Object.prototype, 'addDimensions', { value: function(){
    var prop = arguments[0];
    if(this[prop] !== undefined){
        if(typeof this[prop] !== 'object') throw 'Property "'+prop+'" is already defined.'
    }else{
        if(arguments.length > 1 && ~~arguments[1] === arguments[1] && arguments[1] >= 0) this[prop] = [];
        else this[prop] = {};
    }
    if(arguments.length > 1){
        this[arguments[0]].addDimensions.apply(
            this[arguments[0]],
            Array.prototype.slice.call(arguments,1)
        );
    }
    return this;
},
enumerable: false });

空のオブジェクトで呼び出します{}

var myArrayLikeObject = ({}).addDimensions('design1','0',0); // {design1: [ [ {} ] ] }

または配列[](最初の引数が整数の場合のみ)

var myMultiArray = [].addDimensions(0,'hi',0); // [ {hi: [ {} ] } ]

または既存の配列またはオブジェクト

var a = [0,1,2];
a.addDimensions(3,0); // a = [0, 1, 2, [ {} ] ]
于 2012-09-05T18:56:23.393 に答える