当前位置: 首页 > 知识库问答 >
问题:

javascript - js数组怎么置顶和复原元素呢?

唐兴思
2023-08-28

在javascript数组可以把某个元素置顶,置顶的意思就是变成数组第0位,然后我也要可以复原回原来的位置 比如[1,2,3,4] 置顶[3]后变成[3,1,2,4], 置顶4后变成[4,3,1,2] ,然后复原[4]变成[3,1,2,4]然后复原[3]变成 [1,2,3,4]怎么实现呢?

注意⚠️:复原的元素可以是任意的置顶元素,例如上面例子先复原[3]变成[4,1,2,3],再复原[4]变成[1,2,3,4]

共有1个答案

朱高丽
2023-08-28

可以考虑用一个栈来维护位置信息,在置顶操作时,记录下当前置顶元素的原始位置,压入栈中,在复位时,栈顶就是当前置顶元素的原始位置。

代码如下:

let arr = [1,2,3,4];let positions = []; // 存储置顶元素初始位置的栈function moveToTop(value) {  let index = arr.indexOf(value);  if (index > -1) {    positions.push(index);    arr.splice(index, 1);    arr.unshift(value);  }}function revertToOriginal() {  if (positions.length === 0) return;  let originalIndex = positions.pop();  let index = arr.indexOf(arr[0]);  arr.splice(index, 1);  arr.splice(originalIndex, 0, arr[0]);}// Testconsole.log('初始数组:', arr); // [ 1, 2, 3, 4 ]moveToTop(3);console.log('置顶3:', arr); // [ 3, 1, 2, 4 ]moveToTop(4);console.log('置顶4:', arr); // [ 4, 3, 1, 2 ]revertToOriginal();console.log('复位4:', arr); // [ 3, 1, 2, 4 ]revertToOriginal();console.log('复位3:', arr); // [ 1, 2, 3, 4 ]
 类似资料:
  • 如上图片, 每个方块都有一个宽,高,X轴,Y轴; 有可能宽占多份, 高占多份; 但宽度最大就占3份, 高度不限; 每次删除一个格子, 下面的格子自动往左往上补齐; 给到数据假如是: 删除id为5的格子后,希望得到的是:

  • 本文向大家介绍使用js写一个方法,使得数组的某个元素置顶相关面试题,主要包含被问及使用js写一个方法,使得数组的某个元素置顶时的应答技巧和注意事项,需要的朋友参考一下

  • 问题内容: 有没有更简单的方法来交换数组中的两个元素? 问题答案: 您只需要一个临时变量。 *10年后,我们大量采用了ES6,从而 *编辑 劫持性最高答案: 给定数组,您现在可以在一行中交换值,如下所示: 这将产生数组。。

  • 想知道 js 字符串怎么转成数组对象,上面的转成下面的

  • 传入:{ text: "子目录一", id: 880 } 期望输出: 传入:{ text: "根目录", id: 9521 } 期望输出:

  • 我想问您,除了像(大小为30个元素)这样一开始就设置数组元素数的限制之外,是否还有一种方法可以在java中设置数组元素数的限制。您能在1到10个元素之间设置限制吗? (或者类似的东西)。 我的第二个问题也许更可行的是,你能不能给元素本身设置一个限制,比如当你需要在之后对它们进行排序时,如果一个元素>=100就会给出错误。类似于: