Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.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 查找并仅显示表中的最高分数_Javascript - Fatal编程技术网

Javascript 查找并仅显示表中的最高分数

Javascript 查找并仅显示表中的最高分数,javascript,Javascript,我希望你能帮我写代码 我有一个动态添加数据的HTML表。 因此,我想为它创建一个过滤器,以便删除由同一个人进行的相同测试,并且每个人只显示一个,并且只获得最高分数 名称 试验 日期 分数 无名氏 考试一 02/11/2017 8. 无名氏 考试一 02/11/2017 3. 无名氏 考试一 02/11/2017 8. 无名氏 考试2 02/11/2017 8. 请查看演示。如果您想添加一个复选框来显示其余分数,此代码对您没有帮助,您必须在渲染前通过[name,test]对数据进行分组。因此,

我希望你能帮我写代码

我有一个动态添加数据的HTML表。 因此,我想为它创建一个过滤器,以便删除由同一个人进行的相同测试,并且每个人只显示一个,并且只获得最高分数


名称
试验
日期
分数
无名氏
考试一
02/11/2017
8.
无名氏
考试一
02/11/2017
3.
无名氏
考试一
02/11/2017
8.
无名氏
考试2
02/11/2017
8.

请查看演示。如果您想添加一个复选框来显示其余分数,此代码对您没有帮助,您必须在渲染前通过[name,test]对数据进行分组。因此,您必须提供多个表,而不仅仅是一个表。结构可能如下所示:

<table>
    <thead>
    <tr>
        <th>Name</th>
        <th>Test</th>
        <th>Scores</th>
    </tr>
    </thead>
    <tbody>
    <tr>
        <td title="Name">John Doe</td>
        <td title="Test">Exam 1</td>
        <td>
            <table>
                <thead>
                <tr>
                    <th>Date</th>
                    <th>Score</th>
                </tr>
                </thead>
                <tbody>
                <tr>
                    <td>02/11/2017</td>
                    <td>8</td>
                </tr>
                <tr>
                    <td>02/11/2017</td>
                    <td>3</td>
                </tr>
                </tbody>
            </table>
        </td>
    </tr>
    </tbody>
</table>

名称
试验
分数
无名氏
考试一
日期
分数
02/11/2017
8.
02/11/2017
3.

名称
试验
日期
分数
无名氏
考试一
02/11/2017
8.
无名氏
考试一
02/11/2017
3.
无名氏
考试一
02/11/2017
8.
无名氏
考试2
02/11/2017
8.
设最高={};
数组.from(document.queryselectoral('table tbody tr')).forEach((exam)=>{
const get=(名称)=>{
返回exam.querySelector(`[title=“${name}]”`);
};
var[name,test,score]=[get('name')、get('test')、parseInt(get('score'))];
let key=[name,test];
如果(最高[关键点]>=分数){
exam.parentNode.removeChild(exam);
返回;
}
最高[关键]=分数;
});

请查看演示。如果您想添加一个复选框来显示其余分数,此代码对您没有帮助,您必须在渲染前通过[name,test]对数据进行分组。因此,您必须提供多个表,而不仅仅是一个表。结构可能如下所示:

<table>
    <thead>
    <tr>
        <th>Name</th>
        <th>Test</th>
        <th>Scores</th>
    </tr>
    </thead>
    <tbody>
    <tr>
        <td title="Name">John Doe</td>
        <td title="Test">Exam 1</td>
        <td>
            <table>
                <thead>
                <tr>
                    <th>Date</th>
                    <th>Score</th>
                </tr>
                </thead>
                <tbody>
                <tr>
                    <td>02/11/2017</td>
                    <td>8</td>
                </tr>
                <tr>
                    <td>02/11/2017</td>
                    <td>3</td>
                </tr>
                </tbody>
            </table>
        </td>
    </tr>
    </tbody>
</table>

名称
试验
分数
无名氏
考试一
日期
分数
02/11/2017
8.
02/11/2017
3.

名称
试验
日期
分数
无名氏
考试一
02/11/2017
8.
无名氏
考试一
02/11/2017
3.
无名氏
考试一
02/11/2017
8.
无名氏
考试2
02/11/2017
8.
设最高={};
数组.from(document.queryselectoral('table tbody tr')).forEach((exam)=>{
const get=(名称)=>{
返回exam.querySelector(`[title=“${name}]”`);
};
var[name,test,score]=[get('name')、get('test')、parseInt(get('score'))];
let key=[name,test];
如果(最高[关键点]>=分数){
exam.parentNode.removeChild(exam);
返回;
}
最高[关键]=分数;
});

你似乎把事情弄得太复杂了。只需在表体中的行上循环,并收集name、test、score和它所在的行。如果多次遇到组合,请隐藏较低的分数或显示较高的分数,并更新保存的分数和行

var rows=document.querySelector('table').tBodies[0]。行;
var-seen={};
[].forEach.call(行,行=>{
变量名称=行。单元格[0]。文本内容,
测试=行。单元格[1]。文本内容,
分数=数字(行。单元格[3]。文本内容);
if(seen[name]&&seen[name].hasOwnProperty(测试)){
如果(见[名称][测试]。分数>分数){
row.style.display='none';
}否则{
已看到[name][test].row.style.display='none';
seed[name][test]={score:score,row:row};
}
}否则{
seen[name]={[test]:{score:score,row:row};
}
})

名称
试验
日期
分数
无名氏
考试一
02/11/2017
8.
无名氏
考试一
02/11/2017
13
无名氏
考试一
02/11/2017
3.
无名氏
考试一
02/11/2017
8.
无名氏
考试2
02/11/2017
8.

你似乎把事情弄得太复杂了。只需在表体中的行上循环,并收集name、test、score和它所在的行。如果多次遇到组合,请隐藏较低的分数或显示较高的分数,并更新保存的分数和行

var rows=document.querySelector('table').tBodies[0]。行;
var-seen={};
[].forEach.call(行,行=>{
变量名称=行。单元格[0]。文本内容,
测试=行。单元格[1]。文本内容,
分数=数字(行。单元格[3]。文本内容);
if(seen[name]&&seen[name].hasOwnProperty(测试)){
如果(见[名称][测试]。分数>分数){
row.style.display='none';
}否则{
已看到[name][test].row.style.display='none';
seed[name][test]={score:score,row:row};
}
}否则{
查看[名称]={[测试]:{分数:分数,行: