2017-04-25 3 views
-1

関数などの作成でforループを作成することはできますか?私は配列に多くの値を持っているので、ハードコーディングを減らすためにのみ。私はここに私のコードがあり、それは動作しません。上記のコードから関数を作成する際にforループを作成することはできますか?

var obj=["backupF31","backupF32","backupF33","backupF34","backupF35"]; 
 

 
for (var i = 0; i < obj.length; i++) { 
 
    function obj[i]() 
 
    { 
 
    var data = {}; 
 
      $.ajax({type: 'POST', data: JSON.stringify(data), contentType: 'application/json', 
 
\t \t \t \t \t url: '/legone/survey/'+obj[i]+'', \t \t \t \t \t \t 
 
        success: function(data) { 
 
         } 
 
        }); 
 
\t alert("Sucessful backup on "+obj[i]+"); 
 
    } 
 
}

、私は唯一の[i]はOBJの配列の値を挿入したいのおかげ

答えて

1

私はあなたがしようとしている正確にわからないんだけどここで実現していますが、後で呼び出される関数のリストを作成したい場合は、このスニペットを開始するためにあなたを助けるかもしれない:

var obj=["backupF31","backupF32","backupF33","backupF34","backupF35"]; 
 

 
var functions = obj.map(function(key) { 
 
    return function(data) { 
 
    $.ajax({ 
 
     type: 'POST', 
 
     data: JSON.stringify(data), 
 
     contentType: 'application/json', 
 
     url: '/legone/survey/'+key+'', 
 
     success: function(response) { 
 
     data[key] = response 
 
     } 
 
    }); 
 
    alert("Sucessful backup on "+obj[i]+"); 
 
    } 
 
} 
 

 
var data = {}; 
 
functions.forEach(function(f) { 
 
    f(data); 
 
});
0123これはあなたが望んでいない場合は

、:)コメントしてください

1

これは、あなたが何をしたいことの一つの方法かもしれません:

function doThing(message) 
{ 
    var data = {}; 
    $.ajax({type: 'POST', data: JSON.stringify(data), contentType: 'application/json', 
       url: '/legone/survey/'+message+'',      
       success: function(data) { 
        } 
       }); 
    alert("Successful backup on "+message+"."); 
} 

var obj=[doThing.bind(null, "backupF31"), doThing.bind(null, "backupF32"), 
     doThing.bind(null, "backupF33"), doThing.bind(null, "backupF34"), 
     doThing.bind(null, "backupF35")]; 

for (var thisObj of obj) { 
    thisObj(); 
} 

bind()は事前持つ関数呼び出しを作成します関数ポインタの配列を作成するときに異なる引数を取り込むことができます。

関連する問題