📜  ES2015 中 JavaScript 数组的新特性

📅  最后修改于: 2021-10-22 03:18:14             🧑  作者: Mango

在本文中,我们将讨论 ES2015 中的新增功能,它们极大地改善了我们在 JavaScript 中使用数组的方式。

  1. 数组解构

数组解构允许我们使用类似于数组本身的语法为数组中的变量赋值。让我们看看下面的代码,其中我们有一个动物数组。我们需要将变量 a、b 和 c 分配给数组的前三个元素。

let animals =['Dog','Cat','Rat'];
  
let a = animals[0];
let b = animals[1];
let c = animals[2];
  
console.log(a,b,c);

现在我们需要 3 个语句来分配 3 个变量 a、b 和 c。如果我们有 10 个变量,我们将需要 10 个这样的语句。这种方法绝对不能有效地扩展。针对这个问题,ES2015 引入了数组解构的概念。因此,我们不是在新行中分配每个变量,而是在方括号内的一行代码中分配所有局部变量。例如:

let animals =['Dog','Cat','Rat'];
  
let a,b,c;
  
[a,b,c] = animals;
  
console.log(a,b,c);

在上面的示例中,JavaScript 将左侧的变量数与右侧数组中的元素数相匹配。这种方法很容易理解,需要的代码少得多,而且可扩展性很强。这个的语法是

[ variable1, variable2, ..., variableN ] = array;

我们可以通过在赋值时声明变量来进一步减少行数。

let animals =['Dog','Cat','Rat'];
  
let [a,b,c] = animals;
  
console.log(a,b,c);

要么

let animals =['Dog','Cat','Rat'];
  
let a,b,c;
  
[a, ,b] = animals;
  
console.log(a,b);

所以在上面的例子中,我们不想访问数组的第二个元素,所以我们将它在数组中的占位符留为空白,并且仍然在变量 a 和 b 中获得正确的值,即 a = ‘Dog’ 和 b = ‘鼠’。 “猫”被丢弃了。

现在,下次您需要交换两个变量(例如 a 和 b)时,请执行以下操作,您将在一行中完成。

[a, b] = [b, a];
  1. For-of 循环:

ES2015 引入了一个新循环来迭代数组元素。首先让我们看看当我们需要访问(在我们的示例中打印)数组中的所有元素时我们遵循的当前方法。我们目前使用以下三种方法中的任何一种。

1)

for(let i = 0; i < animals.length; i++){
   console.log(animals[i]);
}

2)

for(let index in animals){
   console.log(animals[index]);
}

3)

animals.forEach(function(animal){
   console.log(animal);
});

第一种第二种方法的问题是我们需要迭代更新索引的值,然后使用该索引值访问数组中的元素。这是无用的额外努力。 3 rd < 方法没有这个问题,但它还有另一个问题。如果我们不想对数组的所有元素执行函数怎么办?如果我们想在某些条件下跳出循环怎么办?我们不能在 3 方法中做到这一点。

所以使用’for-of’循环,我们可以直接访问循环内的元素,如下例所示

for(let animal of animals){
   console.log(animal);
}

我们不需要任何额外的努力来每次分配索引变量。现在我们可以直接访问数组的单个元素

  1. Array.prototype.find()

在 ES2015 中,JavaScript 引入了一个新的高阶函数,用于 JavaScript 数组。这个函数是Array.prototype.find()。此函数返回满足给定条件的元素。它将返回一个布尔值(真或假)的回调函数作为参数。回调函数对数组中的每个元素执行,直到回调为元素返回 true 或当回调函数已对数组中的所有元素执行时。

let animals  = ['Dog', 'Cat', 'Rat'];
  
let animal = animals.find(function(animal){
    if(animal === 'Rat'){
         return true;
    }
});
  
console.log(animal);  //Rat

关于作者:

“Harshit 是一名技术爱好者,对编程有着浓厚的兴趣。他拥有技术学士学位。在诺伊达 JIIT 获得计算机科学学位,目前在 SAP 担任前端开发人员。他还是国家级乒乓球运动员。除此之外,他喜欢通过看电影和英语情景喜剧来放松。他在德里工作,您可以通过 https://in.linkedin.com/pub/harshit-jain/2a/129/bb5 与他联系

如果您还想在这里展示您的博客,请参阅 GBlog,了解 GeeksforGeeks 上的客座博客写作。