Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery在元素之间循环,按数据id排序,并从具有匹配数据id的元素中获取值_Javascript_Jquery_Html - Fatal编程技术网

Javascript jQuery在元素之间循环,按数据id排序,并从具有匹配数据id的元素中获取值

Javascript jQuery在元素之间循环,按数据id排序,并从具有匹配数据id的元素中获取值,javascript,jquery,html,Javascript,Jquery,Html,我要做的是从相同的组ID中获取两个数据组分数值,并将它们相加: 到目前为止,我已获得的更新版本: 示例HTML: <div class="quiz-block-container"> <div class="quiz-block-question" data-group-id="1" data-group-score="2"> </div> <div class="quiz-block-question" data-group-id="1

我要做的是从相同的组ID中获取两个数据组分数值,并将它们相加:

到目前为止,我已获得的更新版本:

示例HTML:

<div class="quiz-block-container">
  <div class="quiz-block-question" data-group-id="1" data-group-score="2">
  </div>
  <div class="quiz-block-question" data-group-id="1" data-group-score="3">
  </div>

  <div class="quiz-block-question" data-group-id="2" data-group-score="1">
  </div>
  <div class="quiz-block-question" data-group-id="2" data-group-score="3">
  </div>

  <div class="quiz-block-question" data-group-id="3" data-group-score="3">
  </div>
  <div class="quiz-block-question" data-group-id="3" data-group-score="1">
  </div>

  <div class="quiz-block-question" data-group-id="4" data-group-score="1">
  </div>
  <div class="quiz-block-question" data-group-id="4" data-group-score="1">
  </div>
</div>
JS(2)


听起来你只是想要一个
.map/reduce
操作。这将返回一个键/值对为id/total的对象

var q=document.querySelectorAll('.quick-block-question');
var res=Array.from(q,el=>
({id:el.dataset.groupId,分数:+el.dataset.groupScore})
).减少((obj,d)=>
赋值(obj,{[d.id]:(obj[d.id]| | 0)+d.score})
, {});
控制台日志(res)


这可能是一个更接近的版本:1组id始终有2组分数?你是什么意思?可能重复感谢,是否可以使用jQuery保持一致?如果我需要使用数组结果,那么最好的方法是什么?再次感谢你的帮助!绝对明星@James:如果您想要jQuery,只需将
document.querySelectorAll
更改为
$
。其余的保持不变。使用结果的最佳方式是什么?什么意思?它只是一个对象。好的,可以在jquery中执行数组/循环吗?
$('.quiz-block-question').each(function() {
  var id = $(this).data('group-id');
  var score = $(this).data('group-score');
    var i = 0;

  $("[data-group-id='" + id + "']").each(function(index) {
    if(++i > 2) {
      return false;
    }
    //$(this).find('.group-id').text(id);
    //console.log("group: " + $(this).data('group-id'));
    //$(this).find('.group-score').text(score);
    //console.log("group score: " + $(this).data('group-score'));
    var first = $(this).data('group-score')[1];
    console.log(first);
    var second = $(this).data('group-score')[2];
    var total = first + second;
    $('.results').append("total:" + total);

  });
  //return false
});
$('.quiz-block-question').each(function(i) {
  var groupID = $(this).data("group-id");
  if ($(this).data('group-id') == i + 1) {
    //console.log(this);
    $("[data-group-id='"+i+"']").each(function() {
      console.log(this);
      var questionGroupID = $(this).data('group-id');
      $(this).each(function() {
        console.log("group score: "+$(this).attr('data-group-score'));
      });
    });
  }
});