用JS代码实现表格多个单元格同时重复对应的数值求和,再生成数组
时间: 2024-05-05 12:18:56 浏览: 9
我理解了,下面是我给您提供的 JS 代码实现表格多个单元格同时重复对应的数值求和,再生成数组的过程:
```javascript
// 获取表格中的所有单元格
const cells = document.querySelectorAll('td');
// 定义一个 Map 用于记录每个单元格的数值以及出现次数
const map = new Map();
// 遍历每个单元格,将相同的数值进行累加操作
cells.forEach(cell => {
const value = cell.textContent.trim();
if (map.has(value)) {
map.set(value, map.get(value) + 1);
} else {
map.set(value, 1);
}
});
// 将每个数值需要重复的次数计算出来,并将每个数值和对应次数组成一个二元数组
const array = Array.from(map.entries()).flatMap(([value, count]) => {
return Array(count).fill(value);
});
console.log(array);
// 输出的结果如下所示,即为对应数值重复出现的数组:["1", "1", "2", "2", "2", "3", "3", "4"]
```
以上就是我基于您的要求,提供的示例代码,希望能够帮助您解决问题。
相关问题
js选择表格多个单元格滑动选择
可以使用以下代码实现表格多个单元格滑动选择的功能:
```javascript
let isMouseDown = false;
let startRowIndex, startCellIndex, endRowIndex, endCellIndex;
const cells = document.querySelectorAll('table td');
// 鼠标按下事件
document.addEventListener('mousedown', (event) => {
isMouseDown = true;
startRowIndex = event.target.parentNode.rowIndex;
startCellIndex = event.target.cellIndex;
});
// 鼠标移动事件
document.addEventListener('mousemove', (event) => {
if (!isMouseDown) return;
endRowIndex = event.target.parentNode.rowIndex;
endCellIndex = event.target.cellIndex;
selectCells();
});
// 鼠标松开事件
document.addEventListener('mouseup', () => {
isMouseDown = false;
});
// 选择单元格
function selectCells() {
for (let i = 0; i < cells.length; i++) {
const cell = cells[i];
const rowIndex = cell.parentNode.rowIndex;
const cellIndex = cell.cellIndex;
const isBetweenRows = (startRowIndex <= rowIndex && rowIndex <= endRowIndex) || (endRowIndex <= rowIndex && rowIndex <= startRowIndex);
const isBetweenCells = (startCellIndex <= cellIndex && cellIndex <= endCellIndex) || (endCellIndex <= cellIndex && cellIndex <= startCellIndex);
if (isBetweenRows && isBetweenCells) {
cell.classList.add('selected');
} else {
cell.classList.remove('selected');
}
}
}
```
这段代码会对页面上所有的表格单元格添加多选功能。当用户按下鼠标时,会记录下当前单元格的行和列索引,当用户移动鼠标时,会根据当前单元格的行和列索引来选择多个单元格并高亮显示。最后,当用户松开鼠标时,多选功能结束。
arcgis10.22工具箱脚本实现批量选择多个字段进行字段属性导出自定义表格边线单元格代码
以下是使用ArcGIS 10.2.2工具箱脚本实现批量选择多个字段进行字段属性导出自定义表格,并添加边线单元格代码的步骤:
1. 打开ArcMap,并在Catalog面板中展开您的工作空间。
2. 创建一个新的Python脚本工具,并将其添加到工具箱中。
3. 编辑Python脚本,并导入所需的模块和库,例如arcpy、os和xlwt。
4. 定义输入参数,例如要素类或表格的路径和名称,以及要导出的字段列表。
5. 在脚本中,使用arcpy.MakeTableView_management函数创建一个表格视图。
6. 使用arcpy.TableToExcel_conversion函数将表格视图转换为Excel工作表。
7. 使用xlwt库打开Excel工作表,并使用所需的边线单元格代码进行格式化。
8. 将Excel工作表保存到输出目录中。
以下是一个示例脚本,用于批量选择多个字段进行字段属性导出自定义表格,并添加边线单元格代码:
```python
import arcpy
import os
import xlwt
# 定义输入参数
input_table = arcpy.GetParameterAsText(0)
output_excel = arcpy.GetParameterAsText(1)
field_list = arcpy.GetParameterAsText(2).split(";")
# 创建表格视图
arcpy.MakeTableView_management(input_table, "table_view", "", "", field_list)
# 导出表格视图到Excel
arcpy.TableToExcel_conversion("table_view", output_excel)
# 打开Excel文件并添加边线单元格代码
workbook = xlwt.Workbook(encoding="utf-8")
worksheet = workbook.add_sheet("Sheet1")
with open(output_excel, "wb") as file:
for r, row in enumerate(worksheet.get_rows()):
for c, col in enumerate(row):
if r == 0:
col.font.bold = True
col.alignment.wrap = 1
col.alignment.horz = xlwt.Alignment.HORZ_CENTER
col.alignment.vert = xlwt.Alignment.VERT_CENTER
if r == 0 or c == 0:
col.borders.bottom = xlwt.Borders.THIN
col.borders.right = xlwt.Borders.THIN
elif r == len(worksheet.get_rows()) - 1 or c == len(row) - 1:
col.borders.top = xlwt.Borders.THIN
col.borders.left = xlwt.Borders.THIN
else:
col.borders.top = xlwt.Borders.THIN
col.borders.left = xlwt.Borders.THIN
col.borders.bottom = xlwt.Borders.THIN
col.borders.right = xlwt.Borders.THIN
workbook.save(file)
```
注意:此示例脚本仅提供了基本的框架和代码示例,并未进行充分测试和验证。使用前请根据您的要求进行修改和优化。