【问题标题】:Find and delete rows up to rowindex of a value in an HTML Table Collection在 HTML 表格集合中查找和删除直到行索引的行
【发布时间】:2022-01-22 22:25:08
【问题描述】:

我有一个像这样的每月 html 日历表:

<table id="a">
  <tr><td>31</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td></tr>
  <tr><td>7</td><td>8</td><td>9</td><td>10</td><td>11</td><td>12</td><td>13</td></tr>
  <tr><td>14</td><td>15</td><td>16</td><td>17</td><td>18</td><td>19</td><td>20</td></tr>
  <tr><td>21</td><td>22</td><td>23</td><td>24</td><td>25</td><td>26</td><td>27</td></tr>
  <tr><td>28</td><td>29</td><td>30</td><td>31</td><td>1</td><td>2</td><td>3</td></tr>
</table>

我需要一个功能解决方案来删除从底部到“7”的行,基本上只留下第一周。我的方法是将集合转换为数组,找到导致deleterow(-1) 的数量在活动表上运行的行索引。

const ta = [...document.querySelectorAll('table#a>*>tr')]
  .map(row => [...row.querySelectorAll('td,th')]
  .map(cell => cell.innerText) );

输出一个多维数组,然后可以循环...

for (let i = 0; i < ta.length; i++) {
  if(ta[i].some(e => e === '7')) console.log(ta.length-i);
};

// 4

但是链接.some(e =&gt; e === '7') 总是返回false。我希望添加类似.some(function (elem, i) {return elem === '7' &amp;&amp; ~(index = i); 的内容来获取找到它的行的索引。

有没有一种功能齐全的方法来实现这一点?

【问题讨论】:

  • 为什么不遍历行...然后遍历每一行中的单元格,直到找到您想要的那个?

标签: javascript multidimensional-array functional-programming


【解决方案1】:

ta.find(row=&gt;row.some(e=&gt;e==="7")) 将为您提供包含“7”的实际子数组,ta.indexOf(...) 将为您提供其在外部数组中的索引:

const ta = [...document.querySelectorAll('table#a tr')]
  .map(row => [...row.children].map(cell => cell.textContent) );
  
let index = ta.indexOf(ta.find(row=>row.some(e=>e==="7")));

console.log(index)
<table id="a">
  <tr><td>31</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td></tr>
  <tr><td>7</td><td>8</td><td>9</td><td>10</td><td>11</td><td>12</td><td>13</td></tr>
  <tr><td>14</td><td>15</td><td>16</td><td>17</td><td>18</td><td>19</td><td>20</td></tr>
  <tr><td>21</td><td>22</td><td>23</td><td>24</td><td>25</td><td>26</td><td>27</td></tr>
  <tr><td>28</td><td>29</td><td>30</td><td>31</td><td>1</td><td>2</td><td>3</td></tr>
</table>

【讨论】:

  • 工作得很好 Carsten,感谢您清理 querySelector/map 语句。只是出于好奇,可以将 indexOf/find 链接起来创建单行吗?
猜你喜欢
  • 2013-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-24
  • 1970-01-01
  • 1970-01-01
  • 2011-11-08
相关资源
最近更新 更多