1

データをデータベースに保存する関数を Javascript (Node.js) で作成しました。さまざまなデータ フィールドを持つオブジェクトを渡していますが、関数が使用するすべてのデータ フィールドがオブジェクトに定義されているとは限りません。

   var obj = {value1: '1', value2: '2'}

   function(obj) {

            mongooseDoc = new Doc({
                    value1: obj.value1,
                    value2: obj.value2,
                    value3: obj.value3,
                    value4: obj.value4,
                    value5: obj.value5.value6
            }

   }

obj.value3 - 6 が定義されていないため、これはエラーになります。3 つの if ステートメントを使用せずにエラーが発生しないように、これをどのようにコーディングしますか? 最初にすべての可能な値でオブジェクト全体を宣言する必要がありますか、それともよりクリーンなメソッドがありますか?

* UPDATE: この場合、value5 が定義されていない場合、value6 に対してこれをどのように処理できますか? *

4

3 に答える 3

1

これを試してください: JSFIDDLE DEMO

var obj = {value1: '1', value2: '2'};

   function hello(obj) {

            var Doc = {
                    value1: obj.value1 || "",
                    value2: obj.value2 || "",
                    value3: obj.value3 || "",
                    value4: obj.value4 || "",
                    value5: obj.value5 || ""
            };
       console.log(Doc);
       alert(Doc);

   }

hello(obj);

Underscore.js Great JS Library を使用して作業することをお勧めします

アンダースコア付きの更新

var obj = {value1: '1', value2: '2'};

   function hello(obj) {

            var mongooseDoc =  _.clone(obj);
            console.log(mongooseDoc);
            alert("Please See in Console:" + mongooseDoc);

   }

JSFIDDLE デモ

複数のオブジェクトの別の更新:

var obj1 = {value1: '1', value2: '2'};
var obj2 = {value3: '3', value4: '4'};

   function hello(obj1,obj2) {

            var mongooseDoc =  _.extend(_.clone(obj1),_.clone(obj2)); //list goes here
            console.log(mongooseDoc);
            alert("Please See in Console:" + mongooseDoc);

   }

hello(obj1,obj2);

JSFIDDLE デモ

于 2013-11-06T22:35:25.320 に答える