Icareabout 2023-12-07 18:26 采纳率: 95.8%
浏览 4
已结题

js 删除多个数组对象里面的值使用什么方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <script src="http://cdn.staticfile.org/jquery/2.1.1-rc2/jquery.min.js"></script>
    <script src="http://cdn.staticfile.org/twitter-bootstrap/3.3.1/js/bootstrap.min.js"></script>
</head>
<body>
    <table class="table table-bordered mt-3">
        <thead>
            <tr>
                <th><input type="checkbox" name="" id="checkAll"></th>
                <th>ID</th>
                <th>名字</th>
                <th>年龄</th>
                <th>班级</th>
                <th>分数</th>
            </tr>
        </thead>
        <tbody id="data">
            <tr>
                <td colspan="6">无内容</td>
            </tr>
        </tbody>
    </table>
    <button type="button" class="btn" onclick="setCheckArr()"> 删除选中</button>

    <script>

    //数据 
        let arr = [
            {name:'第一个',age:'19',class:'三一班',fraction:'98'},
            {name:'第二个',age:'17',class:'三五班',fraction:'97'},
            {name:'第三个',age:'18',class:'三三班',fraction:'91'},
            {name:'第四个',age:'16',class:'三二班',fraction:'88'}
        ];

        getArr()

        //遍历数据 
        function getArr(){
            var tr = "";
            for (let i = 0; i < arr.length; i++) {
                tr +='<tr>'+
                    '<td><input type="checkbox" name="" class="ck"></td>'+
                    '<td>'+i+1+'</td>'+
                    '<td>'+arr[i].name+'</td>'+
                    '<td>'+arr[i].age+'</td>'+
                    '<td>'+arr[i].class+'</td>'+
                    '<td>'+arr[i].fraction+'</td>'+
                '</tr>';
            }
            $('#data').html(tr);
        }

        //删除选中 数据 
        function setCheckArr(){
            let cks = document.querySelectorAll('.ck');
             console.log(cks.length);
            for (let i = 0; i < cks.length; i++) { 
                console.log('第'+i+'为'+cks[i].checked);
                if (cks[i].checked === true) {
                    arr.splice(i,1);
                }
            }
            console.log(arr);
        }
    </script>

</body>
</html>

无法正确的删除勾选的数据

怎么能够高效的删除选中的数据 

因为数据比较多有几百个

  • 写回答

2条回答 默认 最新

  • 前端开发1123 2023-12-07 18:34
    关注

    1.首先数据需要唯一的id。
    2.拿到需要删除的数据id(多个)
    3.用filter方法过滤数据即可 如:

        let arr = [
                {name:'第一个',age:'19',class:'三一班',fraction:'98',id:1},
                {name:'第二个',age:'17',class:'三五班',fraction:'97',id:2},
                {name:'第三个',age:'18',class:'三三班',fraction:'91',id:3},
                {name:'第四个',age:'16',class:'三二班',fraction:'88',id:4}
            ];
     const deleteids=[1,2,3]
    const newArr=arr.filter(item=>{
      return !deleteids.includes(item.id)
    })
    
      这样newArr就只有 {name:'第四个',age:'16',class:'三二班',fraction:'88',id:4}
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月15日
  • 已采纳回答 12月7日
  • 创建了问题 12月7日

悬赏问题

  • ¥15 前端和后端代码都没报错,但是点登录没反应的?
  • ¥100 需要远程解决QSQLITE问题!
  • ¥15 代码问题,应该怎样去修改完善。求解答,
  • ¥15 利用光场表达式画出初始光场强度分布图像等几个问题在这两个图片里
  • ¥15 gozero求手把手教学,400一天
  • ¥15 泥浆冲清水的泥浆分布
  • ¥15 LASSO回归分析筛选关键基因,适合多大样本量?
  • ¥88 error: [polling_error] {"code":"ETELEGRAM","message":"ETELEGRAM: 502 Bad Gateway"}错误
  • ¥15 刚毕业,刚通过一家PLC工程师,请问一下待遇还算可以吗?
  • ¥15 公司内网,想基本不写代码挂一些视频,有一个还不错的前端展示,有什么软件或者框架可以用吗?尽量简单