首页 > 其他分享 >使用delete删除数组,其长度会改变吗?

使用delete删除数组,其长度会改变吗?

时间:2024-12-07 09:36:32浏览次数:3  
标签:arr console log 删除 元素 数组 delete

在 JavaScript 中,使用 delete 操作符删除数组元素不会改变数组的长度。它会在被删除元素的位置留下一个空洞,用 undefined 表示。

例如:

let arr = [1, 2, 3, 4, 5];
delete arr[2]; // 删除索引为 2 的元素 (值是 3)
console.log(arr); // 输出: [1, 2, <1 empty item>, 4, 5]
console.log(arr.length); // 输出: 5  长度仍然是 5
console.log(arr[2]); // 输出: undefined

虽然 length 属性保持不变,但数组中存在 undefined 会影响一些数组方法的行为。例如:

  • forEach 会跳过空洞。
  • map 会将空洞映射为 undefined
  • filter 会过滤掉空洞。
  • join 会将空洞转换为空字符串。

如果想要真正删除元素并改变数组长度,应该使用以下方法:

  • splice(): 这是最常用的方法。它可以删除指定位置的元素,并可以插入新元素。
let arr = [1, 2, 3, 4, 5];
arr.splice(2, 1); // 从索引 2 开始删除 1 个元素
console.log(arr); // 输出: [1, 2, 4, 5]
console.log(arr.length); // 输出: 4  长度变为 4
  • filter(): 可以根据条件过滤数组元素,创建一个新数组。
let arr = [1, 2, 3, 4, 5];
let newArr = arr.filter((element, index) => index !== 2); // 保留索引不为 2 的元素
console.log(newArr); // 输出: [1, 2, 4, 5]
console.log(newArr.length); // 输出: 4  新数组长度为 4

总而言之,delete 操作符不是删除数组元素并缩短数组长度的最佳方法。 splice() 方法更适合用于此目的。 如果需要根据条件删除元素,filter() 方法也是一个不错的选择。

标签:arr,console,log,删除,元素,数组,delete
From: https://www.cnblogs.com/ai888/p/18591751

相关文章

  • 【C++算法】31.前缀和_连续数组
    文章目录题目链接:题目描述:解法C++算法代码:图解题目链接:525.连续数组题目描述:解法前缀和思想:如果把0变成-1,那么就是在区间内找一个最长的子数组,使得子数组中所有元素的和为0前面做过一个前缀和为k的子数组,这里就是转化为和为0。前缀和+哈希表哈希表里......
  • Golang教程第16篇(语言数组)
    Go语言数组Go语言提供了数组类型的数据结构。数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。相对于去声明number0,number1,…,number99的变量,使用数组形式numbers[0],numbers[1]…,......
  • 并发编程系列---【数组切割并行查询-解决sql的in超过1000的问题】
    1.问题List<List<Object>>splitList=CollUtil.split(dataList,800);List<User>resultList=newArrayList<>();//使用parallelStream输出切割后的结果,每个子列表的大小splitList.parallelStream().forEach(sublist->{List<User>users=userMa......
  • leetcode 3266. K 次乘运算后的最终数组 II
    3266.K次乘运算后的最终数组II给你一个整数数组 nums ,一个整数 k  和一个整数 multiplier 。你需要对 nums 执行 k 次操作,每次操作中:找到 nums 中的 最小 值 x ,如果存在多个最小值,选择最 前面 的一个。将 x 替换为 x*multiplier 。k 次操作以......
  • JavaScript查找数组中某个元素的位置
    indexOf:在JavaScript中,你可以使用indexOf()方法来查找数组中元素的位置。如果元素不存在于数组中,indexOf()会返回-1。letindex=array.indexOf('x')if(index!=-1){//...}findIndex:如果你需要查找的是复杂对象数组,你可能需要自定义一个查找函数,使用findIndex()letobj......
  • 数组 - 八皇后 - 困难
    *************C++topic: 面试题08.12.八皇后-力扣(LeetCode)*************Goodmorning,gays,Fridaryanginandtrythehardtocelebrate.Inspectthetopic:ThistopicIcanunderstanditinasecond.  AndIdorethinkamovie,whichtalksanoutch......
  • leetcode第4题 如何求出两个有序数组的中位数
    leetcode原题大意,给定两个升序排列的有序数组,例如nums1=[1,2],nums2=[3,4]那么,这两个有序数组的所有数字的中位数为(2+3)/2=1.5,现在要求以O(log(m+n))的时间复杂度。funcfindMedianSortedArrays(nums1[]int,nums2[]int)float64{ length:=len(nums1)+len(nums2) ......
  • C语言实验 二维数组
    时间:2024.12.6一、实验7-1矩阵运算代码 #include<stdio.h>intmain(){inta[20][20]={0};intn,i,j;intsum=0;scanf("%d",&n);for(i=0;i<n;i++){for(j=0;j<n;j++){scanf("%d",&a[i][j])......
  • Linux应用开发 - 删除某文件之外的文件或目录
    By:fulinuxE-mail:fulinux@sina.comBlog:https://blog.csdn.net/fulinus喜欢的盆友欢迎点赞和订阅!你的喜欢就是我写作的动力!目录环境准备编写程序编译和测试环境准备mkdirdel_dir/cddel_dir/编写程序vimdelete.c/*fulinux@sina.com*/......
  • JavaScript中todolist操作--待办事项的添加 删除 完成功能
    效果图在文本框中输入内容点击添加按钮会在下面生成添加功能html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><......