У меня есть Таблица данных, и в этой таблице есть ячейка, содержащая несколько span-элементов, например этот:
<span class = "btn btn-xs btn-info" data-room = "1910" data-id = "1" disabled>
<strong>unimportant description</strong>
</span>
Я только что поместил содержимое ячейки в переменную:
var extras = roomstable.cell(closestRow,3).data();
Как я могу отфильтровать идентификаторы в тегах data-id, чтобы поместить их в массив?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я могу предоставить решение с помощью jquery.
<script src = "https://code.jquery.com/jquery-3.3.1.js"></script>
В качестве аргумента вы должны указать свою ячейку, в вашем случае это будет extras. Попробуйте подарить свой roomstable.cell(closestRow,3). В моем случае было $('#dt').find('tr').eq(1).find('td').eq(0)
$(function(){
var table = $('#dt').DataTable();
arr_ids($('#dt').find('tr').eq(1).find('td').eq(0));
})
function arr_ids(celll) {
var ar = [];
celll.find('span').each(function(){
if ($(this).data('id')) {
ar.push($(this).data('id'));
}
});
alert(ar);
}<script src = "https://code.jquery.com/jquery-3.3.1.js"></script>
<script src = "https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<script src = "https://cdn.datatables.net/1.10.19/js/dataTables.bootstrap4.min.js"></script>
<table id = "dt">
<thead>
<th>aaaaaaaaaaaaaaaaaaaaaa </th>
<th>bbbbbbbbbbbbbbbbbbbbbbb </th>
<th>ccccccccccccccccccccc </th>
</thead>
<tbody>
<tr>
<td>
<span class = "btn btn-xs btn-info" data-room = "1910" data-id = "1" disabled>
<strong>unimportant description</strong>
</span>
<span class = "btn btn-xs btn-info" data-room = "1945" data-id = "13" disabled>
<strong>unimportant description</strong>
</span>
</td>
<td> </td>
<td> </td>
</tr>
</tbody>
<tfoot>
<th>aaaaaaaaaaaaaaaaaaaaaa </th>
<th>bbbbbbbbbbbbbbbbbbbbbbb </th>
<th>ccccccccccccccccccccc</th>
</tfoot>
</table>Если идея состоит в том, чтобы извлечь несколько идентификаторов кнопок в ячейке в массив, вам лучше использовать метод cell().node() вместо cell().data().
Это позволит вам захватить все кнопки, повернуть этот набор toArray() и извлечь значения атрибутов data-id:
var extras = $(roomstable.cell(closestRow,3).node())
.find('span.btn')
.toArray()
.map(span => $(span).attr('data-id'));
да спасибо! Оно работает. Я просто вставил ), который вы забыли, в конце map.
Возможно, вы бы использовали идентификатор таблицы вместо
roomstable