JavaScript实现删除数组中某个的对象(JavaScript-实践)

简介: 分享JavaScript实现删除数组中某个的对象!案例详解!
hello你好我是辰兮,很高兴你能来阅读,本篇关于前端数组移除对象的相关知识点,也是自己项目中遇到的一点问题,分享获取新知,大家一起进步!

业务场景:表格删除数据后实现刷新表格

场景描述:前端通常情况下获取的是一个数组对象的集合,如果某一个列表涉及到删除操作操作的时候,这时候删除某一个数据后,整个列表要进行刷新
在这里插入图片描述

这里我分享两种处理方法

1.后台实现:再次调用查询的接口,重新查询,列表实现刷新

2.前端实现:前端数组,如List[ ]直接移除删除的对象,绑定监听事件实现表格数据发生变化的时候刷新

常见的前端接受的数组集合举例--包含很多对象

//常见的前端接受的数组集合--包含很多对象
 "list": [
            {
                "id": 16,
                "typeId": 9,
                "weights": 1.00,
                "name": "腾讯内推"      
            },
            {
                "id": 22,
                "typeId": 9,
                "weights": 0.80,
                "name": "百度内推"
            },
            {
                "id": 13,
                "typeId": 8,
                "weights": 0.90,
                "name": "offer许愿池"
            }
        ]

拓展问题:JavaScript根据Id取出数组中指定的对象

从数组中找到id是2020的对象

var obj=arr.find(function (obj) {
            return obj.id === 2020
        })

补充讲解:JavaScript splice() 方法

在这里插入图片描述

定义和用法:splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。

注释:该方法会改变原始数组。

说明:splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。

arr.splice(i,1); //删除下标为i的元素  前面是索引 后面是数量1代表一个

如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。


思路一:JavaScript方法,实现数组中找出对象然后移除

其实底层还是调用的splice的方法

核心关键:找到对象索引,然后splice(i,1)

在这里插入图片描述

用如下两个方法就可以实现

先提供一个判断对象是否相等的方法

//判断对象是否相等
function isObjectValueEqual(a, b) {
    if(typeof(a) != "object" && typeof(b) != "object"){
        if(a == b){
            return true;
        }else{
            return false;
        }
    }
    var aProps = Object.getOwnPropertyNames(a);
    var bProps = Object.getOwnPropertyNames(b);

    if (aProps.length != bProps.length) {
        return false;
    }

    for (var i = 0; i < aProps.length; i++) {
        var propName = aProps[i];

        if (a[propName] !== b[propName]) {
            return false;
        }
    }

    return true;
}

再用移除数组中指定对象的方法即可实现移除对象

//从数组中移除对象
function removeObjWithArr(_arr,_obj) {
    var length = _arr.length;
    for(var i = 0; i < length; i++)
    {
        if(isObjectValueEqual(_arr[i],_obj))
        {
            if(i == 0)
            {
                _arr.shift(); //删除并返回数组的第一个元素
                return;
            }
            else if(i == length-1)
            {
                _arr.pop();  //删除并返回数组的最后一个元素
                return;
            }
            else
            {
                _arr.splice(i,1); //删除下标为i的元素
                return;
            }
        }
    }
};

思路二:直接找到索引

从数组中获取指定对象的索引

ps:这里依然要调用上面的判断对象是否相等的方法

//从数组中获取对象的索引
function getIndexInArr(_arr,_obj) {
    var len = _arr.length;
    for(var i = 0; i < len; i++)
    {
        if(isObjectValueEqual(_arr[i],_obj)) {
            return i;
        }
    }
    return -1;
};

删除操作:从索引是i的元素开始删除,删除一个

arr.splice(i,1); //删除下标为i的元素 删除1个

希望我的总结对你有帮助哈哈


The best investment is to invest in yourself.

在这里插入图片描述

愿你们奔赴在自己的热爱里!

目录
相关文章
|
8月前
|
前端开发 算法 API
构建高性能图像处理Web应用:Next.js与TailwindCSS实践
本文分享了构建在线图像黑白转换工具的技术实践,涵盖技术栈选择、架构设计与性能优化。项目采用Next.js提供优秀的SSR性能和SEO支持,TailwindCSS加速UI开发,WebAssembly实现高性能图像处理算法。通过渐进式处理、WebWorker隔离及内存管理等策略,解决大图像处理性能瓶颈,并确保跨浏览器兼容性和移动设备优化。实际应用案例展示了其即时处理、高质量输出和客户端隐私保护等特点。未来计划引入WebGPU加速、AI增强等功能,进一步提升用户体验。此技术栈为Web图像处理应用提供了高效可行的解决方案。
|
JavaScript 前端开发
如何在 JavaScript 中使用 __proto__ 实现对象的继承?
使用`__proto__`实现对象继承时需要注意原型链的完整性和属性方法的正确继承,避免出现意外的行为和错误。同时,在现代JavaScript中,也可以使用`class`和`extends`关键字来实现更简洁和直观的继承语法,但理解基于`__proto__`的继承方式对于深入理解JavaScript的面向对象编程和原型链机制仍然具有重要意义。
|
Web App开发 JavaScript 前端开发
如何确保 Math 对象的方法在不同的 JavaScript 环境中具有一致的精度?
【10月更文挑战第29天】通过遵循标准和最佳实践、采用固定精度计算、进行全面的测试与验证、避免隐式类型转换以及持续关注和更新等方法,可以在很大程度上确保Math对象的方法在不同的JavaScript环境中具有一致的精度,从而提高代码的可靠性和可移植性。
|
存储 JavaScript 前端开发
使用JavaScript构建动态交互式网页:从基础到实践
【10月更文挑战第12天】使用JavaScript构建动态交互式网页:从基础到实践
643 1
|
9月前
|
编解码 JavaScript 前端开发
【Java进阶】详解JavaScript的BOM(浏览器对象模型)
总的来说,BOM提供了一种方式来与浏览器进行交互。通过BOM,你可以操作窗口、获取URL、操作历史、访问HTML文档、获取浏览器信息和屏幕信息等。虽然BOM并没有正式的标准,但大多数现代浏览器都实现了相似的功能,因此,你可以放心地在你的JavaScript代码中使用BOM。
281 23
|
9月前
|
前端开发 JavaScript Java
【Java进阶】JavaScript电灯开关实例:从理论到实践
这个例子展示了JavaScript的基本功能,包括操作HTML元素,监听事件,以及改变元素的样式。通过学习和理解这个例子,你可以了解到JavaScript在网页中的应用,以及如何使用JavaScript来创建交互式的网页。
189 13
|
8月前
|
人工智能 监控 前端开发
基于 Next.js 的书法字体生成工具架构设计与 SSR 优化实践
本项目是一款书法字体生成工具,采用 Next.js 14(App Router)与 Tailwind CSS 构建前端,阿里云 Serverless 部署后端。通过混合渲染策略(SSG/SSR/CSR)、Web Worker 异步计算及 CDN 字体分片加载优化性能。服务端借助阿里云函数计算处理计算密集型任务,将平均耗时从 1200ms 降至 280ms,支持 1000+ QPS。动态路由与 ARMS 监控提升工程化水平,未来计划引入 WebGPU 和 AI 字体风格迁移技术,进一步优化用户体验。
|
10月前
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
12月前
|
缓存 NoSQL JavaScript
Vue.js应用结合Redis数据库:实践与优化
将Vue.js应用与Redis结合,可以实现高效的数据管理和快速响应的用户体验。通过合理的实践步骤和优化策略,可以充分发挥两者的优势,提高应用的性能和可靠性。希望本文能为您在实际开发中提供有价值的参考。
337 11
|
10月前
|
缓存 自然语言处理 JavaScript
JavaScript中闭包详解+举例,闭包的各种实践场景:高级技巧与实用指南
闭包是JavaScript中不可或缺的部分,它不仅可以增强代码的可维护性,还能在模块化、回调处理等场景中发挥巨大作用。然而,闭包的强大也意味着需要谨慎使用,避免潜在的性能问题和内存泄漏。通过对闭包原理的深入理解以及在实际项目中的灵活应用,你将能够更加高效地编写出简洁且功能强大的代码。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~