从跨度的数据元素创建json数组

时间:2018-04-25 17:15:58

标签: javascript jquery json

我是JSON的新手,我正在尝试创建一个json数组,我可以将其发送到php文件进行处理。我希望json看起来与下面类似。

{"clubs":[
{"number":"12", "type":"break"}, 
{"number":"4", "type":"group"}, 
{"number":"87", "type":"tring"},
{"number":"7", "type":"samestuff"}
]}

我可以将元素放到一个数组中,但它是这样的:  类型:断裂,编号:12,类型:组,号:4,类型:特林,编号:87,类型:samestuff,数:7

任何人都可以修复此问题,以便创建数字/类型的json数组吗?我已在下面附上我目前的代码。

$(document).ready(function() {
    $("#testbutton").click(function() {
            var clubs = [];
            $(".spanme").each(function() {
            var myarray = [];
            var type = $(this).data("type");
            myarray.push("type:"+type);
            var number = $(this).data("number");
            myarray.push("number:"+number);
            clubs.push(myarray);
            });
        console.log(clubs)
      });
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="testbutton">Test button</button>
<span class="spanme" data-number="12" data-type="break">span </span>
<span class="spanme" data-number="4" data-type="group">span </span>
<span class="spanme" data-number="87" data-type="tring">span </span>
<span class="spanme" data-number="7" data-type="samestuff">span </span><br/>

提前感谢您的帮助

3 个答案:

答案 0 :(得分:1)

使用querySelectorAll获取普通班级的所有范围&amp;使用map将返回一个数组。使用展开...将允许使用map等数组方法。使用data

获取getAttribute属性

var x = [...document.querySelectorAll('.spanme')].map(function(item) {
  return {
    "numbers": item.getAttribute('data-number'),
    "type": item.getAttribute('data-type')
  }

})

var someObj = {
  "clubs": x

}
console.log(someObj)
<button id="testbutton">Test button</button>
<span class="spanme" data-number="12" data-type="break">span </span>
<span class="spanme" data-number="4" data-type="group">span </span>
<span class="spanme" data-number="87" data-type="tring">span </span>
<span class="spanme" data-number="7" data-type="samestuff">span </span><br/>

答案 1 :(得分:1)

您可以将元素映射到结果的对象中。

&#13;
&#13;
$(document).ready(function() {
  $("#testbutton").click(function() {
    var result = {
      clubs: $('.spanme').map(function(){
        return { number: this.getAttribute('data-number'), type: this.getAttribute('data-type') };
      }).get()
    };
    
    console.log(result);
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="testbutton">Test button</button>
<span class="spanme" data-number="12" data-type="break">span </span>
<span class="spanme" data-number="4" data-type="group">span </span>
<span class="spanme" data-number="87" data-type="tring">span </span>
<span class="spanme" data-number="7" data-type="samestuff">span </span><br/>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您需要将const purchase = +row.pricePurchase; row.priceList = purchase + (purchase * +row.markUp / 100); 数据放入数组push。因此,首先使用clubs键创建object,然后将对象形式的值推送到此数组。您可以使用clubs创建对象。

&#13;
&#13;
{}
&#13;
$(document).ready(function() {
$("#testbutton").click(function() {
    var obj = {'clubs': []};
    $(".spanme").each(function() {
      var type = $(this).data("type");
      var number = $(this).data("number");
      obj.clubs.push({type, number});
    });
    console.log(obj)
  });
});
&#13;
&#13;
&#13;

或者,您可以使用返回数组的<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button id="testbutton">Test button</button> <span class="spanme" data-number="12" data-type="break">span </span> <span class="spanme" data-number="4" data-type="group">span </span> <span class="spanme" data-number="87" data-type="tring">span </span> <span class="spanme" data-number="7" data-type="samestuff">span </span><br/>

&#13;
&#13;
map()
&#13;
$("#testbutton").click(function() {
  var obj = { clubs: $('.spanme').map(function(){
      return {type : $(this).data("type") , number : $(this).data("number")};
    }).get()};
  console.log(obj)
});
&#13;
&#13;
&#13;