将多个数组推送到对象

时间:2017-06-01 17:04:44

标签: javascript jquery

我需要将2个数组的每个元素推入一个对象, 输入的数量和输入的值。

我这是我想要的输出

[{"span" : 1},{"value": 1}]

然而,我的对象一直空着。我不确定我在这里缺少什么。

$('#group').on('click', function() {
  var addFieldsArray = $('.add').map(function() {
    return $(this).val();
  }).get();
 var addSpanArray = $('[name="span[]"]').map(function(){
 	return $(this).text();
 }).get();


 var obj = {};
 obj.final = [];
 for(var i=0; i< addSpanArray.length; i++){
 	obj.final.push[{"span": addSpanArray[i]}, {"value": addFieldsArray[i]}]
 }
 console.log(obj.final);

})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" name="add[]" class="add" id="one"><span name="span[]" id="s-one">1</span>
<input type="text" name="add[]" class="add" id="two"><span name="span[]"  id="s-two">2</span>
<input type="text" name="add[]" class="add" id="three"><span name="span[]"  id="s-three">3</span>
<input type="text" name="add[]" class="add" id="four"><span name="span[]"  id="s-four">4</span>
<br/>
<input type="text" name="add[]" class="add" id="five"><span name="span[]"  id="s-five">5</span>
<input type="text" name="add[]" class="add" id="six"><span name="span[]"  id="s-six">6</span>
<input type="text" name="add[]" class="add" id="seven"><span name="span[]"  id="s-seven">7</span>
<input type="text" name="add[]" class="add" id="eight"><span name="span[]"  id="s-eight">8</span>
<br/>
<button id="group">Group</button>

2 个答案:

答案 0 :(得分:0)

Array.prototype.push是一个函数,所以使用括号而不是方括号来调用它:

obj.final.push[
//            ^

应该是:

obj.final.push({"span": addSpanArray[i]}, {"value": addFieldsArray[i]});

答案 1 :(得分:0)

为什么不使用.each()进行迭代?

$('#group').on('click', function() {
  var obj = {};
  obj.final = [];
  $(".add").each(function() {
    obj.final.push({
      span: $(this).next("span").html(),
      value: $(this).val()
    });
  });
  console.log(obj.final);
});