在 JavaScript 中更改数组元素的位置
要更改元素在数组中的位置:
-
使用
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']
我们将值为 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
方法来:
- 从数组中删除特定索引处的元素并获取其值。
- 将元素添加到特定索引处的数组。
我希望有 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']
我们还可以创建一个可重用函数,该函数采用数组、fromIndex
和 toIndex
参数并移动元素。
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
。
相关文章
在 C 语言中获取字符数组的长度
发布时间:2023/05/07 浏览次数:166 分类:C语言
-
本文演示了如何在 C 语言中获取一个 char 数组的长度。使用 sizeof 运算符来查找字符数组的长度 数组的大小可以用 sizeof 运算符计算,而不考虑元素的数据类型。
如何在 C 语言中获取数组的大小
发布时间:2023/05/07 浏览次数:92 分类:C语言
-
本教程介绍了 C 语言中确定数组大小的方法。本教程介绍了在 C 语言中使用 sizeof()运算符的方法。
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 数组中的重复元素。我们可以创建一个程序来计算数组中的重复元素。 该数组可以是未排序的,也可以是已排序的。
使用 CSS 和 JavaScript 制作文本闪烁
发布时间:2023/04/28 浏览次数:146 分类:CSS
-
本文提供了使用 CSS、JavaScript 和 jQuery 使文本闪烁的详细说明。
如何在 C++ 中把字符串转换为 Char 数组
发布时间:2023/04/09 浏览次数:107 分类:C++
-
本文介绍了在 C++ 中把字符串转换为 char 数组的多种方法。使用 std::basic_string::c_str 方法将字符串转换为 char 数组