迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 > JavaScript >

在 JavaScript 中更改数组元素的位置

作者:迹忆客 最近更新:2022/12/31 浏览次数:

要更改元素在数组中的位置:

  1. 使用 splice() 方法从数组中删除指定索引处的元素。
  2. 使用 splice() 方法将元素插入数组中的新索引处。
const arr = ['css', 'js', 'ts'];

const fromIndex = arr.indexOf('css'); // 👉️ 0
const toIndex = 2;

const element = arr.splice(fromIndex, 1)[0];
console.log(element); // ['css']

arr.splice(toIndex, 0, element);

console.log(arr); // 👉️ ['js', 'ts', 'css']

我们将值为 css 的数组元素的位置从索引 0 更改为索引 2。

我们首先使用 Array.indexOf() 方法来获取元素的索引。

const arr = ['css', 'js', 'ts'];

console.log(arr.indexOf('css')); // 👉️ 0

然后我们使用 Array.splice() 方法,将以下 2 个参数传递给它:

  • start index - 开始更改数组的索引。
  • delete count - 应该从数组中删除多少元素。

我们只想删除一个元素,所以我们将删除计数参数设置为 1。

splice() 方法返回一个包含已删除元素的数组。

const arr = ['css', 'js', 'ts'];

const splice = arr.splice(0, 1);
console.log(splice) // 👉️ ['css']

我们知道我们只从数组中删除了 1 个元素,所以我们直接访问索引 0 处的数组元素以获取我们将在新位置插入的元素的值。

最后一步是再次调用 splice() 方法。 但是,这次我们使用它在特定索引处向数组添加一个元素。

我们传递给 splice 方法的第三个参数是要添加到数组中的元素。

const arr = ['css', 'js', 'ts'];

const fromIndex = arr.indexOf('css'); // 👉️ 0
const toIndex = 2;

const element = arr.splice(fromIndex, 1)[0];
console.log(element); // ['css']

arr.splice(toIndex, 0, element);

console.log(arr); // 👉️ ['js', 'ts', 'css']

我们将起始索引参数设置为元素应该放置的新位置。

最后,我们将删除计数参数设置为 0,表示我们不想从数组中删除任何元素。

在本文中,我们使用 splice 方法来:

  1. 从数组中删除特定索引处的元素并获取其值。
  2. 将元素添加到特定索引处的数组。

我希望有 2 个独立的内置方法来实现这 2 个截然不同的目标。 但是,这是在 JavaScript 中执行此操作的方法。

我们也可以将代码缩短为一行,但它的可读性会降低。

const arr = ['css', 'js', 'ts'];

const fromIndex = arr.indexOf('css'); // 👉️ 0
const toIndex = 2;

arr.splice(toIndex, 0, arr.splice(fromIndex, 1)[0]);

console.log(arr); // 👉️ ['js', 'ts', 'css']

我们还可以创建一个可重用函数,该函数采用数组、fromIndextoIndex 参数并移动元素。

function moveElement(array, fromIndex, toIndex) {
  const element = array.splice(fromIndex, 1)[0];

  console.log(element);

  arr.splice(toIndex, 0, element);

  return arr;
}

const arr = ['css', 'js', 'ts'];

const fromIndex = arr.indexOf('css'); // 👉️ 0
const toIndex = 2;

const result = moveElement(arr, fromIndex, toIndex);
console.log(result); // 👉️ [ 'js', 'ts', 'css' ]

该函数将数组元素移动到位并返回数组。

如果我们想在不更改原始数组的情况下创建一个新数组,请创建一个浅表副本。

function moveElement(array, fromIndex, toIndex) {
  const arrayCopy = [...array];
  const element = arrayCopy.splice(fromIndex, 1)[0];

  console.log(element);

  arrayCopy.splice(toIndex, 0, element);

  return arrayCopy;
}

const arr = ['css', 'js', 'ts'];

const fromIndex = arr.indexOf('css'); // 👉️ 0
const toIndex = 2;

const result = moveElement(arr, fromIndex, toIndex);
console.log(result); // 👉️ [ 'js', 'ts', 'css' ]

console.log(arr); // 👉️ [ 'css', 'js', 'ts' ]

我们使用扩展语法 ... 创建数组的浅表副本,并在副本上调用 splice() 方法。

moveElement() 函数不会更改原始数组,它会返回一个反映更改的新数组。或者,我们可以使用 array-move npm 包。

使用 array-move 更改数组中元素的位置

要更改元素在数组中的位置:

在项目的根目录(package.json 文件所在的位置)中打开终端并安装 array-move 包。

$ npm install array-move

导入并使用包导出的函数来移动数组元素。

import {arrayMoveImmutable} from 'array-move';

const arr = ['css', 'js', 'ts'];

const fromIndex = arr.indexOf('css'); // 👉️ 0
const toIndex = 2;

const newArray = arrayMoveImmutable(arr, fromIndex, toIndex);

console.log(newArray); // 👉️ [ 'js', 'ts', 'css' ]

console.log(arr); // 👉️ [ 'css', 'js', 'ts' ]

arrayMoveImmutable 函数将数组、from 索引和 to 索引作为参数,并返回一个移动了指定元素的新数组。

该函数不会就地改变原始数组。

如果我们想就地更改原始数组,请使用 arrayMoveMutable() 函数。

import {arrayMoveMutable} from 'array-move';

const arr = ['css', 'js', 'ts'];

const fromIndex = arr.indexOf('css'); // 👉️ 0
const toIndex = 2;

arrayMoveMutable(arr, fromIndex, toIndex);

console.log(arr); // 👉️ [ 'js', 'ts', 'css' ]

arrayMoveMutable() 函数将数组、from 索引和 to 索引作为参数,就地更改数组并返回 undefined

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 C 语言中获取字符数组的长度

发布时间:2023/05/07 浏览次数:166 分类:C语言

本文演示了如何在 C 语言中获取一个 char 数组的长度。使用 sizeof 运算符来查找字符数组的长度 数组的大小可以用 sizeof 运算符计算,而不考虑元素的数据类型。

在 C 语言中初始化字符数组

发布时间:2023/05/07 浏览次数:158 分类:C语言

本文介绍了如何在 C 语言中初始化字符数组。使用 {} 卷曲括号列表符号在 C 语言中初始化一个字符数组

C 语言中复制字符数组

发布时间:2023/05/07 浏览次数:117 分类:C语言

本文介绍了如何在 C 语言中复制字符数组。使用 memcpy 函数在 C 语言中复制一个字符数组 char 数组可能是 C 代码中最常用的数据结构,复制数组内容是它的核心操作之一。

Django ArrayField 数组字段

发布时间:2023/05/04 浏览次数:167 分类:Python

在本文中,我们将学习在 Django 数据库模型中使用 ArrayFields。Django中的ArrayField类似于Java、C、C++等其他编程语言中的数组数据结构,存储相同数据类型的多个值。

计算 Java 数组中的重复元素

发布时间:2023/05/01 浏览次数:202 分类:Java

本篇文章介绍Java计算数组中重复元素的方法。计算 Java 数组中的重复元素。我们可以创建一个程序来计算数组中的重复元素。 该数组可以是未排序的,也可以是已排序的。

MATLAB 数组大小限制

发布时间:2023/04/23 浏览次数:92 分类:MATLAB

本教程将讨论如何使用 MATLAB 中的 memory 命令检查内存限制和数组的最大大小。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便