2017-05-12 22 views
-1

serializeArray() によって返されたフォームデータをより望ましい構造に再構築するにはどうすればよいですか?フォームjsonデータの再構築方法は?

は、だから今私が持っている:

[ 
    { 
     "name":"email8", 
     "value":"[email protected]" 
    }, 
    { 
     "name":"password8", 
     "value":"pass1" 
    }, 
    { 
     "name":"email9", 
     "value":"[email protected]" 
    }, 
    { 
     "name":"password9", 
     "value":"pass2" 
    }, 
    { 
     "name":"email10", 
     "value":"[email protected]" 
    }, 
    { 
     "name":"password10", 
     "value":"pass3" 
    } 
] 

私はそれになりたい:これはPHPやJavaScriptで行われている場合、私は心をいけない

{ 
    "[email protected]":"pass1", 
    "[email protected]":"pass2", 
    "[email protected]":"pass3" 
} 

。それは場合に役立ちます。ここ は、フォームの画像です:enter image description here

アップデート:ここで が、私はそれをやっていることに変更した方がよいかもしれないものである:

$user = WebmailAutologinUser::find(1); 
$emails = array(
"[email protected]" => "pass1", 
"[email protected]" => "pass2", 
"[email protected]" => "pass3"); 

foreach ($emails as $email => $password) { 
    $user->autoLoginAccounts()->create([ 
     'email' => $email, 
     'password' => $password 
    ]); 
} 

その配列をはめ込むために雄弁使用しますdbに入力します。

したがってemailおよびpasswordはdbの列です。

+0

は、カスタムのシリアル化を書くのか? –

答えて

0

可能なアプローチは、Array#reduceを使用します。

var arr = [{"name":"email8","value":"[email protected]"},{"name":"password8","value":"pass1"},{"name":"email9","value":"[email protected]"},{"name":"password9","value":"pass2"},{"name":"email10","value":"[email protected]"},{"name":"password10","value":"pass3"}], 
 
    res = arr.reduce((s,a,i) => (i % 2 ? s[arr[i-1].value] = a.value : null, s), {}); 
 

 
    console.log(res);

+0

あなたの答えが正しいかどうか尋ねなければならない場合は、投稿する前に待つかもしれませんか? –

+0

@ StoneArcherそれは本当に彼が望んでいる場合私はOPを求めていることは本当に悪いですか?私の答えを取り除く/改善するための彼の応答を待っています。とにかく、現時点であなたがこのように行動しているような行動は、まったく役に立たない。むしろ破壊的です。 "[email protected]"、 "password8": "パス"、 "email9": –

+0

閉じるそれは ' { "email8" 戻り "[email protected]" を、 "password9": "パス"、 "email10": "[email protected]"、 "password10": } '' ' –

-2
function test() 
{ 
//alert("Hi"); 
var text = '[{"name":"email8","value":"[email protected]"},{"name":"password8","value":"pass"},{"name":"email9","value":"[email protected]"},{"name":"password9","value":"pass"},{"name":"email10","value":"[email protected]"},{"name":"password10","value":"pass"}]' 

json = JSON.parse(text); 

var result = {}; 

for(var i = 0; i < json.length; i++) { 
    var obj = json[i]; 

    if(obj.name.startsWith('email')){ 
     key = obj.value; 
     i++; 
     var obj = json[i]; 
     if(obj.name.startsWith('password')){ 
     result[key] = obj.value; 
     } 
    } 


} 

console.log(result); 

} 
関連する問題