使用jQuery将Div值的行转换为数组

时间:2018-07-27 02:48:38

标签: javascript jquery associative-array

示例: 我有可变数量的行,每行有3个div,像这样的类:

<div class="row> 
<div class='date'>1/2/2018</div> 
<div class='event'>concert</div>
<div class='act'>Pink Floyd</div>
</div>

<div class="row> 
<div class='date'>12/5/2017</div> 
<div class='event'>dj set</div>
<div class='act'>Moby</div>
</div>

<div class="row> 
<div class='date'>5/5/2018</div> 
<div class='event'>movie</div>
<div class='act'>Ant-Man</div>
</div>

如何使用jQuery将它们收集到一个关联数组中,该数组将传递给php以插入到数据库表中?

2 个答案:

答案 0 :(得分:2)

您可以使用map遍历.row div。使用reduce将内部div分组为一个js对象。

var result = $('.row').map(function() {
  return $(this).find('div').toArray().reduce(function(c, v) {
    c[$(v).attr('class')] = $(v).text();
    return c;
  }, {});
}).get();


console.log(result);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">
  <div class='date'>1/2/2018</div>
  <div class='event'>concert</div>
  <div class='act'>Pink Floyd</div>
</div>

<div class="row">
  <div class='date'>12/5/2017</div>
  <div class='event'>dj set</div>
  <div class='act'>Moby</div>
</div>

<div class="row">
  <div class='date'>5/5/2018</div>
  <div class='event'>movie</div>
  <div class='act'>Ant-Man</div>
</div>

答案 1 :(得分:1)

要选择所有带有类行的div,请使用

  var rows=$('div.row');

要遍历它,请使用

var array=[];
for(var i=0;i <rows.length;i++){
$.each(rows,function(){
var children=this.children('div');
$.each(children,function(){
var index=this.attr('class');
var value=this.text();
array[i][index]=value;
});
});
}

console.log(array);