目录
合并数组
什么是浅拷贝?
将数组转换为字符串
转换数组
过滤数组
结论
首页 CMS教程 &#&按 JavaScript 数组转换和转换

JavaScript 数组转换和转换

Aug 28, 2023 pm 11:41 PM

JavaScript 数组转换和转换

数组是编程中一种基本且强大的数据结构。它们的力量不仅仅来自于存储多个对象或值的能力。它们还公开了各种工具,使操作和使用它们所包含的数据变得容易。

我们经常需要更改数组以满足特定需求。例如,您可能需要重新组织数组中的对象,以便它按特定属性的值排序,或者您可能需要将多个数组合并为单个数组。在许多情况下,您可能需要将一个对象数组完全转换为另一个完全不同对象的数组。

在本教程中,您将了解 JavaScript 提供的用于合并、复制、转换和过滤数组的工具。然而,在开始之前,我必须指出,虽然我使用术语“合并”、“转换”、“转换”和“过滤”,但这些过程很少更改现有数组。相反,他们创建一个新数组,其中包含合并、转换、转换和过滤的数据,使原始数组保持不变的原始格式。

跳转到本节内容:

  • 合并数组
  • 复制数组
  • 将数组转换为字符串
  • 转换数组
  • 过滤数组

合并数组

也许您正在处理来自不同来源的数据,或者您可能有多个数组并希望将它们组合成一个数组,以便更轻松地处理它们。无论出于何种原因,有时您都需要将多个数组合并为一个数组。 JavaScript 为我们提供了两种组合数组的方法。您可以使用 concat() 方法或展开运算符 (...)。

concat() 方法用于合并两个或多个数组,并返回一个包含合并数组元素的新数组。新数组将首先由您调用该方法的数组对象中的元素填充。然后,它将由您传递给该方法的数组对象的元素填充。例如:

const array1 = [1, 2, 3];
const array2 = [4, 5, 6];
const mergedArray = array1.concat(array2);
console.log(mergedArray); // output: [1, 2, 3, 4, 5, 6]
登录后复制

在这段代码中,我们有两个数组,array1array2。我们使用 array1array2。我们使用 concat() 方法将这些数组合并到一个名为 mergedArray 的新数组中,您可以看到生成的数组包含元素 [1, 2, 3, 4, 5, 6]。下面的示例更改代码,以便在 array2 上调用 concat() 方法将这些数组合并到一个名为 mergedArray 的新数组中,您可以看到生成的数组包含元素 [1, 2, 3, 4, 5, 6]。下面的示例更改代码,以便在 array2 上调用

方法:

const array1 = [1, 2, 3];
const array2 = [4, 5, 6];
const mergedArray2 = array2.concat(array1);
console.log(mergedArray2); // output: [4, 5, 6, 1, 2, 3]
登录后复制
[4, 5, 6, 1, 2, 3]。因此,如果元素顺序对您很重要,请务必按照您想要的顺序使用 concat()请注意,在此代码中,结果数组中的元素的顺序不同:[4, 5, 6, 1, 2, 3]。因此,如果元素顺序对您很重要,请务必按照您想要的顺序使用

另一方面,扩展运算符允许您扩展数组的元素,并且可以在新的数组文字中使用它来合并数组。例如:

const array1 = [1, 2, 3];
const array2 = [4, 5, 6];
const mergedArray = [...array1, ...array2];
console.log(mergedArray); // output: [1, 2, 3, 4, 5, 6]
登录后复制
array1array2,但我们使用扩展运算符将它们合并到一个名为 mergedArray 的新数组中。最终结果与第一个 concat() 示例相同,但使用这种方法可以让您(以及那些阅读代码的人)更清楚地了解 mergedArray在这里,我们再次有两个数组,array1array2,但我们使用扩展运算符将它们合并到一个名为 mergedArray 的新数组中。最终结果与第一个

示例相同,但使用这种方法可以让您(以及那些阅读代码的人)更清楚地了解 mergedArray 是如何构建和填充的。

复制数组

您可能想要复制数组的原因有多种。您可能希望保留数组的原始数据(如果它们是简单值),或者您可能希望避免使用或操作数组对象本身带来的任何意外副作用。不管出于什么原因,JavaScript 使得创建数组的副本变得非常容易。

slice()要创建数组的副本,可以使用 方法。此方法返回您调用它的数组的浅表副本(稍后详细介绍)。例如:

const originalArray = [1, 2, 3, 4, 5];
const copiedArray = originalArray.slice();

console.log(copiedArray); // output: [1, 2, 3, 4, 5]
登录后复制
这段代码定义了一个名为originalArray数组,我们使用slice()方法创建它的副本,而不传递任何参数。 copiedArrayoriginalArray

数组,我们使用

slice()方法创建它的副本,而不传递任何参数。 copiedArray 对象包含与原始值相同的值,但它是一个完全不同的数组对象。

slice()您还可以使用

方法通过指定开始和结束索引来提取数组的一部分。🎜🎜
const originalArray = [1, 2, 3, 4, 5];
const slicedArray = originalArray.slice(1, 4);

console.log(slicedArray); // output: [2, 3, 4]
登录后复制
🎜在此示例中,我们创建一个切片数组,其中包含原始数组从索引 1 到索引 3 的元素(不包括传递给 🎜 方法的结束索引)。🎜

什么是浅拷贝?

浅拷贝是指创建一个新的对象或数组,它是原始对象或集合的副本,但仅限于第一级。换句话说,浅拷贝复制原始对象的结构,但不复制其中包含的对象或元素。

当您创建数组的浅表副本时,新数组将拥有自己的一组引用,对与原始数组相同的对象或元素进行引用。这意味着如果原始数组包含简单值(例如数字、字符串或布尔值),则浅拷贝将有效地创建具有相同值的新数组。但是,如果原始数组包含对象或其他引用类型(例如其他数组或对象),则浅复制将仅复制对这些对象的引用,而不是对象本身。因此,对原始数组中的对象所做的任何更改也将反映在浅拷贝中,反之亦然,因为它们仍然引用内存中的相同对象。

相比之下,深层复制创建一个新的对象或集合,它是原始对象或集合的完整、独立的副本,包括所有嵌套的对象或元素。这意味着对原始数组中的对象所做的更改不会影响深层复制,反之亦然,因为它们在内存中拥有自己的对象集。

下面是一个例子来说明差异:

const originalArray = [1, 2, { a: 3 }];
const shallowCopy = originalArray.slice();
const deepCopy = JSON.parse(JSON.stringify(originalArray));

originalArray[2].a = 4;

console.log(shallowCopy); // output: [1, 2, { a: 4 }]
console.log(deepCopy); // output: [1, 2, { a: 3 }]
登录后复制

在此示例中,shallowCopy反映对原始数组所做的更改,而deepCopy不受影响。< /p>

将数组转换为字符串

数组是一种编程构造,很多时候我们需要将数组转换为字符串。也许我们需要向用户呈现数组的内容。也许我们需要将数组的内容序列化为 JSON 以外的格式。

通过使用 join() 方法,您可以将数组转换为字符串。默认情况下,元素以逗号分隔,但您可以通过将字符串作为参数传递给 join() 方法来指定自定义分隔符。例如:

const fruitArray = ['apple', 'banana', 'cherry'];
const fruitString = fruitArray.join(', ');

console.log(fruitString); // output: &amp;quot;apple, banana, cherry&amp;quot;
登录后复制

在此示例中,我们有一个名为 fruitArray 的数组,我们使用 join() 方法将其转换为字符串自定义分隔符 - 逗号后跟空格。

使用 join() 的一个更有用的示例是从包含 URL 查询字符串参数的数组中输出 URL 查询字符串,如下所示:

const queryParamsArray = [
  'search=JavaScript',
  'page=1',
  'sort=relevance',
];

const queryString = queryParamsArray.join('&amp;amp;');

const url = 'https://example.com/api?' + queryString;
console.log(url); // output: &amp;quot;https://example.com/api?search=JavaScript&amp;amp;page=1&amp;amp;sort=relevance&amp;quot;
登录后复制

在此代码中,我们有一个名为 queryParamsArray 的数组,其中包含一组查询字符串参数。然后,我们使用 join() 方法将数组的元素与 &amp; 分隔符连接起来,形成一个查询字符串。最后,我们通过将查询字符串附加到基本 URL 来构建完整的 URL。

生成 URL 查询参数字符串是使用 join() 的常见用例。但是,您将使用一组复杂的对象,而不是像本示例中所示的简单的预定义字符串,然后必须将其转换为可以连接在一起的字符串数组。

转换数组

转换数组的能力是 JavaScript 中最有用、最强大的功能之一。正如我在本教程前面提到的,您并不是真正转换数组,而是创建一个包含转换后的对象或值的新数组。原始数组未修改。

要转换数组,请使用 map() 方法。它接受回调函数作为参数,并为数组中的每个元素执行该函数。

map(function (currentElement[, index, array]));
登录后复制

回调函数可以接受以下三个参数:

  • currentElement:当前要转换的元素(必填)
  • index:当前元素的索引(可选)
  • array:调用 map() 方法的数组(可选)

然后,回调函数的返回值将作为元素存储在新数组中。例如:

const numbers = [1, 2, 3, 4, 5];

function square(number) {
  return number * number;
}

const squaredNumbers = numbers.map(square);

console.log(squaredNumbers); // output: [1, 4, 9, 16, 25]
登录后复制

在此代码中,我们有一个名为 numbers 的数组,并声明一个名为 square 的函数,该函数将数字作为输入并返回该数字的平方。我们将 square 函数传递给 numbers.map() 以创建一个名为 squaredNumbers 的新数组,其中包含原始数字的平方值。

但是让我们看一个从对象数组构建 URL 查询字符串的示例。原始数组将包含具有 param (对于参数名称)和 value (对于参数值)属性的对象。

const queryParams = [
  { param: 'search', value: 'JavaScript' },
  { param: 'page', value: 1 },
  { param: 'sort', value: 'relevance' },
];

function createParams(obj) {
  return obj.param + '=' + obj.value;
}

const queryStringArray = queryParams.map(createParams);

const queryString = queryStringArray.join('&amp;amp;');

const url = 'https://example.com/api?' + queryString;
console.log(url); // output: &amp;quot;https://example.com/api?search=JavaScript&amp;amp;page=1&amp;amp;sort=relevance&amp;quot;
登录后复制

在此示例中,我们有一个名为 queryParams 的数组,其中包含我们要转换为查询字符串的对象。我们声明一个名为 createParams 的函数,它接受一个对象作为输入并返回格式为“param=value”的字符串。然后,我们使用 map() 方法将 createParams 函数应用于原始数组中的每个对象,从而创建一个名为 queryStringArray 的新数组。

接下来,我们 join() queryStringArray 创建最终的查询字符串,使用 &amp; 分隔符分隔每个 param=value 对,然后我们通过将查询字符串附加到来构造完整的 URL基本 URL。

使用 map() 方法是处理数组的重要部分,但有时我们只需要处理数组中的几个元素。

过滤数组

filter() 方法允许您创建一个仅包含满足给定条件的元素的新数组。这是通过将回调函数传递给 filter() 方法来实现的,该方法测试原始数组中的每个元素。如果回调函数返回true,则该元素包含在新数组中;如果返回 false,则排除该元素。

回调函数使用与 map() 方法的回调函数相同的签名:

filter(function(currentElement[, index, array]));
登录后复制

currentElement 参数是必需的,但 indexarray 是可选的。例如:

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

function isEven(number) {
  return number % 2 === 0;
}

const evenNumbers = numbers.filter(isEven);

console.log(evenNumbers); // output: [2, 4, 6, 8, 10]
登录后复制

在此示例中,我们有一个名为 numbers 的数组。我们声明一个名为 isEven 的函数,它接受一个数字作为输入,如果数字是偶数(即能被 2 整除),则返回 true ,否则返回 false 。我们通过使用 isEven 函数作为 filter() 方法的回调函数来过滤原始数组,从而创建一个名为 evenNumbers 的新数组。生成的 evenNumbers 数组仅包含原始数组中的偶数。

filter() 方法是处理数组的强大工具,允许您轻松提取相关数据或根据特定条件创建数组的子集。

结论

数组是 JavaScript 中最通用、最有用的对象之一,因为我们有工具可以轻松地合并、复制、转换、转换和过滤它们。这些技术中的每一种都有特定的用途,您可以通过各种方式将它们组合起来,以在 JavaScript 应用程序中有效地操作和处理数组。通过理解和应用这些方法,您将能够更好地应对涉及数组的各种编程挑战。

当您继续发展 JavaScript 技能时,请记住练习使用这些数组方法并探索该语言中可用的其他内置数组函数。这将帮助您更加精通 JavaScript,并使您能够编写更高效、干净且可维护的代码。快乐编码!

以上是JavaScript 数组转换和转换的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1673
14
CakePHP 教程
1429
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
如何在 WordPress 中获取登录用户信息以获得个性化结果 如何在 WordPress 中获取登录用户信息以获得个性化结果 Apr 19, 2025 pm 11:57 PM

最近,我们向您展示了如何通过允许用户将自己喜欢的帖子保存在个性化库中来为用户创建个性化体验。您可以通过在某些地方(即欢迎屏幕)使用他们的名字,将个性化结果提升到另一个水平。幸运的是,WordPress使获取登录用户的信息变得非常容易。在本文中,我们将向您展示如何检索与当前登录用户相关的信息。我们将利用get_currentuserinfo(); 功能。这可以在主题中的任何地方使用(页眉、页脚、侧边栏、页面模板等)。为了使其工作,用户必须登录。因此我们需要使用

wordpress文章列表怎么调 wordpress文章列表怎么调 Apr 20, 2025 am 10:48 AM

有四种方法可以调整 WordPress 文章列表:使用主题选项、使用插件(如 Post Types Order、WP Post List、Boxy Stuff)、使用代码(在 functions.php 文件中添加设置)或直接修改 WordPress 数据库。

如何开始WordPress博客:初学者的分步指南 如何开始WordPress博客:初学者的分步指南 Apr 17, 2025 am 08:25 AM

博客是人们在网上表达观点、意见和见解的理想平台。许多新手渴望建立自己的网站,却因担心技术障碍或成本问题而犹豫不决。然而,随着平台不断发展以满足初学者的能力和需求,现在开始变得比以往任何时候都更容易。 本文将逐步指导您如何建立一个WordPress博客,从主题选择到使用插件提升安全性和性能,助您轻松创建自己的网站。 选择博客主题和方向 在购买域名或注册主机之前,最好先确定您计划涵盖的主题。个人网站可以围绕旅行、烹饪、产品评论、音乐或任何激发您兴趣的爱好展开。专注于您真正感兴趣的领域可以鼓励持续写作

如何在父分类的存档页面上显示子分类 如何在父分类的存档页面上显示子分类 Apr 19, 2025 pm 11:54 PM

您想了解如何在父分类存档页面上显示子分类吗?在自定义分类存档页面时,您可能需要执行此操作,以使其对访问者更有用。在本文中,我们将向您展示如何在父分类存档页面上轻松显示子分类。为什么在父分类存档页面上显示子分类?通过在父分类存档页面上显示所有子分类,您可以使其不那么通用,对访问者更有用。例如,如果您运行一个关于书籍的WordPress博客,并且有一个名为“主题”的分类法,那么您可以添加“小说”、“非小说”等子分类法,以便您的读者可以

如何在 WordPress 中按帖子过期日期对帖子进行排序 如何在 WordPress 中按帖子过期日期对帖子进行排序 Apr 19, 2025 pm 11:48 PM

过去,我们分享过如何使用PostExpirator插件使WordPress中的帖子过期。好吧,在创建活动列表网站时,我们发现这个插件非常有用。我们可以轻松删除过期的活动列表。其次,多亏了这个插件,按帖子过期日期对帖子进行排序也非常容易。在本文中,我们将向您展示如何在WordPress中按帖子过期日期对帖子进行排序。更新了代码以反映插件中更改自定义字段名称的更改。感谢Tajim在评论中让我们知道。在我们的特定项目中,我们将事件作为自定义帖子类型。现在

wordpress主机怎么建站 wordpress主机怎么建站 Apr 20, 2025 am 11:12 AM

要使用 WordPress 主机建站,需要:选择一个可靠的主机提供商。购买一个域名。设置 WordPress 主机帐户。选择一个主题。添加页面和文章。安装插件。自定义您的网站。发布您的网站。

如何使用 IFTTT 自动化 WordPress 和社交媒体(及更多) 如何使用 IFTTT 自动化 WordPress 和社交媒体(及更多) Apr 18, 2025 am 11:27 AM

您是否正在寻找自动化 WordPress 网站和社交媒体帐户的方法? 通过自动化,您将能够在 Facebook、Twitter、LinkedIn、Instagram 等平台上自动分享您的 WordPress 博客文章或更新。 在本文中,我们将向您展示如何使用 IFTTT、Zapier 和 Uncanny Automator 轻松实现 WordPress 和社交媒体的自动化。 为什么要自动化 WordPress 和社交媒体? 自动化您的WordPre

wordpress怎么导入源码 wordpress怎么导入源码 Apr 20, 2025 am 11:24 AM

导入 WordPress 源码需要以下步骤:创建子主题以进行主题修改。导入源码,覆盖子主题中的文件。激活子主题,使其生效。测试更改,确保一切正常。

See all articles