1

要素の最初のつまり共通プレフィックスに整数を渡すことにより、ループからオブジェクト要素を動的に生成しようとしています。

このような:

           if(inventory.inventory_obj.length){
                obj.inventory_length = inventory.inventory_obj.length;
                for(var x=0; x < inventory.inventory_obj.length; x++){

                    obj.warehouse_+x = inventory.inventory_obj[x].warehouse;
                    obj.name_+x = inventory.inventory_obj[x].name;
                    obj.space_+x = inventory.inventory_obj[x].space;
                    obj.cost_+x = inventory.inventory_obj[x].cost;
                    obj.quantity_+x = inventory.inventory_obj[x].quantity;
                    obj.level_+x = inventory.inventory_obj[x].level;
                    obj.status_+x = inventory.inventory_obj[x].status;
                    obj.deleted_+x = inventory.inventory_obj[x].deleted;
                }
            }

上記を実行すると"Invalid left-hand side in assignment"エラーが発生します

console.log(inventory.inventory_obj) で inventory.inventory_obj をテストし、必要な値があることを確認しました。

私が行った他の試みには、

                    obj.warehouse_+""+x = inventory.inventory_obj[x].warehouse;
                    obj.warehouse+"_"+x = inventory.inventory_obj[x].warehouse;
                    obj.warehouse_+x.toString() = inventory.inventory_obj[x].warehouse;
                    obj.warehouse.concat("_"+x+"") = inventory.inventory_obj[x].warehouse;
                    //Eliminating the underscore
                    obj.warehouse+x = inventory.inventory_obj[x].warehouse;

上記はすべて失敗しました。

誰かが私が間違っていることを理解するのを手伝ってください。

4

3 に答える 3

3

プロパティ名を動的に作成するには、角括弧表記を使用します。

obj['warehouse_' + x] = nventory.inventory_obj[x].warehouse;
于 2013-07-18T06:38:07.447 に答える
2

+名前obj.warehouse_+xやそのような他のすべてのインスタンスに含めることはできません。

次を使用する必要があります:obj["warehouse_" + x]動的オブジェクト キー名の場合。

連結には、次を使用してみてください。

obj["warehouse_" + x] = obj["warehouse_" + x]  + inventory.inventory_obj[x].warehouse;

文字列や数値 (+=) のようなオブジェクトの連結演算子はありません。

于 2013-07-18T06:37:41.003 に答える
0

実際に文字列を作成しない限り、言語は算術名を受け入れませんが、多くの類似した名前の変数の代わりに配列を使用することで、セマンティックが向上すると思います。

たとえば、 indexed が多数ある場合はobj.warehouse、配列として初期化する必要があります。

obj.warehouse=[];

次に、何かを入れるには:

obj.warehouse[x] = inventory.inventory_obj[x].warehouse;

倉庫にアクセスするたびに連結する必要がないため、後で簡単にアクセスできます。また、「連結」アクセスがある限り、名前が変更されるたびにデバッグが面倒になる可能性があります。

于 2013-07-18T06:51:51.070 に答える