2016-12-20 14 views
1

配列を値で埋めるために、この2つの関数があります。私は2の代わりに1つの配列だけを埋めたいと思います。どのようにして連想配列を作ることができますか?2つの配列を1つの連想配列に変更します。

var itemMetaArray = []; 
var itemLabelArray = []; 

$('.frm_pro_form input, .frm_pro_form select, .frm_pro_form textarea').each(function(){ 
    if ($(this).attr('type') != 'hidden' && ($(this).attr("type") != "submit")) { 
     itemMetaArray.push($(this).attr("name")); 
    } 
}); 

$('.frm_form_field label').each(function(){ 
    itemLabelArray.push($(this).text()); 
}); 

console.log(itemMetaArray); 
console.log(itemLabelArray); 
<div id="frm_field_71_container" class="frm_form_field form-field frm_top_container"> 
    <label for="field_p0hth" class="frm_primary_label"> 
    Date 
    <span class="frm_required"></span> 
    </label> 
    <input type="text" id="field_p0hth" name="item_meta[71]" value="" maxlength="10" class="frm_date" /> 
</div> 
+0

:これを試してみてください。第二に、あなたのHTMLはどのように見えますか? 'label'は' input'にどのように関係していますか? –

+0

ここにHTMLがあります:

Nathan30

答えて

2

まずJSは、連想配列を有していません。代わりにオブジェクトを使用できます。オブジェクトを作成するには、必要な入力をループするだけで、関連するlabelを取得し、必要に応じてキー/値を設定するだけです。オブジェクトが必要なものを行いますが、まずJSは、連想配列を持っていない

var output = {}; 
 

 
$('.frm_pro_form :input:not(:hidden, :submit)').each(function() { 
 
    var key = $(this).closest('div').find('label').text().trim(); 
 
    output[key] = $(this).val(); 
 
}); 
 

 
console.log(output);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form class="frm_pro_form"> 
 
    <div id="frm_field_71_container" class="frm_form_field form-field frm_top_container"> 
 
    <label for="field_p0hth" class="frm_primary_label"> 
 
     Date #1 
 
     <span class="frm_required"></span> 
 
    </label> 
 
    <input type="text" id="field_p0hth" name="item_meta[71]" value="foo" maxlength="10" class="frm_date" /> 
 
    </div> 
 
    <div id="frm_field_72_container" class="frm_form_field form-field frm_top_container"> 
 
    <label for="field_p0hth" class="frm_primary_label"> 
 
     Date #2 
 
     <span class="frm_required"></span> 
 
    </label> 
 
    <input type="text" id="field_p1hth" name="item_meta[72]" value="bar" maxlength="10" class="frm_date" /> 
 
    </div> 
 
</form>

+0

うわー、驚くべきことです。どうもありがとう ! – Nathan30

関連する問題