получить самый высокий номер атрибута в jquery и ecmascript6 - PullRequest
0 голосов
/ 26 апреля 2018

пытается получить максимальное значение для всех выборок с одним и тем же атрибутом данных. но получаю ошибку

{"message": "Uncaught TypeError: undefined не является функцией",
"filename": "https://stacksnippets.net/js"," lineno ": 37," colno ": 34}

, пожалуйста, запустите фрагмент ниже, я хотел бы, чтобы он утешил 3, так как это самый высокий номер группы ответа с question.id 1

$(document).ready(function() {
  let question = {
    Id: 1
  };

  let responseGroupNumber = Math.max(...$(`select[data-questionid = ${question.Id}]`)
    .map(x => $(x)
      .attr('data-responsegroupnumber')));

  console.log(responseGroupNumber);

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select data-questionid="1" data-responsegroupnumber="1">
  <option>one</option>
  <option>two</option>
  <option>three</option>
</select>


<select data-questionid="1" data-responsegroupnumber="2">
  <option>one</option>
  <option>two</option>
  <option>three</option>
</select>

<select data-questionid="1" data-responsegroupnumber="3">
  <option>one</option>
  <option>two</option>
  <option>three</option>
</select>

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Другая возможная реализация может быть:

$(document).ready(function() {
 let question = {
   Id: 1
 };

 var selects = $(`select[data-questionid=${question.Id}]`).toArray();
 var dataGroupNumber = selects.map(select => ($(select).attr('data- 
   responsegroupnumber')));

let responseGroupNumber = Math.max.apply(null, dataGroupNumber);
console.log(responseGroupNumber);
});

Math.max.apply (null, dataGroupNumber) вместо распределения массива внутри Math.max (...);

0 голосов
/ 26 апреля 2018

Вам необходимо использовать функцию jQuery .get() перед отображением:

В противном случае вы будете использовать метод jQuery .map() вместо Array#map

$(document).ready(function() {
  let question = {
    Id: 1
  };
  
  let responseGroupNumber = Math.max(...$(`select[data-questionid = ${question.Id}]`).get().map(x => $(x).attr('data-responsegroupnumber')));
  console.log(responseGroupNumber);
  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select data-questionid="1" data-responsegroupnumber="1">
  <option>one</option>
  <option>two</option>
  <option>three</option>
</select>


<select data-questionid="1" data-responsegroupnumber="2">
  <option>one</option>
  <option>two</option>
  <option>three</option>
</select>

<select data-questionid="1" data-responsegroupnumber="3">
  <option>one</option>
  <option>two</option>
  <option>three</option>
</select>
...