首页 > 其他分享 >写一个方法,让数组里的元素上移一格/下移一格

写一个方法,让数组里的元素上移一格/下移一格

时间:2024-12-17 09:13:21浏览次数:4  
标签:index arr const 上移 newArr 元素 数组 下移

在前端开发中,处理数组上移或下移元素是一个常见的需求。以下是一个简单的JavaScript方法,用于实现数组元素的上移或下移。

function shiftArrayElement(arr, index, direction) {
  // 检查数组是否有效以及索引是否在数组范围内
  if (!Array.isArray(arr) || index < 0 || index >= arr.length) {
    return arr; // 或者抛出一个错误
  }

  // 创建数组的副本,以避免直接修改原始数组
  const newArr = [...arr];

  // 根据方向移动元素
  if (direction === 'up') {
    // 如果是第一个元素,则将其移动到数组末尾
    if (index === 0) {
      newArr.push(newArr.shift());
    } else {
      // 否则,将元素上移一格
      const temp = newArr[index];
      newArr[index] = newArr[index - 1];
      newArr[index - 1] = temp;
    }
  } else if (direction === 'down') {
    // 如果是最后一个元素,则将其移动到数组开头
    if (index === arr.length - 1) {
      newArr.unshift(newArr.pop());
    } else {
      // 否则,将元素下移一格
      const temp = newArr[index];
      newArr[index] = newArr[index + 1];
      newArr[index + 1] = temp;
    }
  }

  return newArr;
}

这个方法接受三个参数:

  1. arr:要操作的数组。
  2. index:要移动的元素的索引。
  3. direction:移动的方向,可以是 'up''down'

方法首先检查数组是否有效以及索引是否在数组范围内。然后,它创建一个数组的副本以避免直接修改原始数组。接下来,根据指定的方向,方法将元素上移或下移一格。如果是数组的第一个或最后一个元素,方法会将其循环移动到数组的末尾或开头。最后,方法返回新的数组。

你可以这样使用这个方法:

const arr = [1, 2, 3, 4, 5];
const newIndexArr = shiftArrayElement(arr, 2, 'down'); // [1, 2, 4, 3, 5]
const anotherNewIndexArr = shiftArrayElement(arr, 0, 'up'); // [2, 3, 4, 5, 1]

标签:index,arr,const,上移,newArr,元素,数组,下移
From: https://www.cnblogs.com/ai888/p/18611505

相关文章

  • js数组-实例方法:Array.prototype.at,Array.prototype.concat,Array.prototype.copyWi
    Array.prototype.at()at()方法接收一个整数值并返回该索引对应的元素,允许正数和负数。负整数从数组中的最后一个元素开始倒数语法at(index)参数index要返回的数组元素的索引(从零开始),会被转换为整数。负数索引从数组末尾开始计数——如果index<0,则会访问index......
  • 使数组全为奇数的问题
    问题描述小U手中有一个包含N个整数的数组A,它的编号从0到N-1。小U可以执行一种操作:在任意时刻选择数组中任意奇数索引i的元素A[i]并将其删除。也就是说,用户可以从数组中删除所有位于奇数索引处的元素。你的任务是帮助小U判断是否可以通过若干次这样的操作使得数组......
  • 算法之数组
    数组二分查找给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。题解:如果等于nums[middle],返回middle;否则返回left或者low。 移除元素在排序数组中查找target的开始位置和结束位置。二分法不可能会......
  • 4. 寻找两个正序数组的中位数
    classSolution{public://在nums1[L1,R1]和nums2[L2,R2]中,找到第k小的数intfindMedian(vector&nums1,intL1,intR1,vector&nums2,intL2,intR2,intk){//用nums1[L1,R1]的最中间的数nums1[mid],在nums2中划分,//nums2[L2,x]是小于等于nums1[mid],nums2[x+......
  • java list 和数组互相转换的一些方法
    在Java中,List和数组(Array) 之间的转换是一个常见的操作。由于它们是不同的数据结构,Java提供了一些方法来在它们之间进行转换。我们会从List到数组和数组到List两种情况分别讨论。1.List转数组假设你有一个`List`类型的对象,想要将其转换为一个数组。你可以使用List`类......
  • 一个数组的全部内容复制到另外一个数组
    ucharInput_N_Valid_HL[4]="LLLL"; //错误ucharInput_N_Valid_HL[5]="LLLL"; //正确case4: EEPROM_Read(EEPROM_String_2,8,8); sprintf(segString,%s,EEPROM_String_2); //方法1:sprintf函数,将某个数组内容打印到另外一个数组(不推荐)sprintf(segString,&quo......
  • 字符数组及应用
    这两个等价长度都为10。 这两个等价长度都为11。 如果有:则:注意: ......
  • Java 数组
    数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。Java语言中提供的数组是用来存储固定大小的同类型元素。你可以声明一个数组变量,如numbers[100]来代替直接声明100个独立变量number0,number1,....,number99。本教程将为大家......
  • C语言中对数组进行解引用的几种常见写法
    1.对数组进行解引用1.1使用数组名+索引(常用)    该方法是最常见,也是最基本的,用数组名加下标来找到数组对应的元素intmain(){ intarr[5]={1,2,3,4,5}; intret=arr[2]; printf("%d\n",ret); return0;}    上面的代码中,数组的下标是0~4,通过arr......
  • Problem: 1338. 数组大小减半 贪心 模拟 法 简单易懂
    Problem:1338.数组大小减半思路因为要选择最小的整数集合,这里用Counter容器来统计下所有各种数字的大小,然后按照值来排序,设置target来表示要到达什么位置,这里最好不要用整除,防止要计算的大于arr,但是len(arr)是奇数,这里total表示删除到这个位置已经删除了多少数字,如果大......