2.2JavaScript引用类型之数组(Array)

数组(Array)是一个有序的数据集合。

  • 数组中的元素是有序的,通过索引访问。
  • 数组中的元素不必都属于同一个类型,而且可以随时替换元素。
  • 数组的长度(元素的个数)可以动态改变,可以向数组添加、删除元素。

1.创建数组

//对象字面量创建法(推荐)
let arr = [element0, element1, ..., elementN];

//操作符new创建法              
let arr = new Array(element0, element1, ..., elementN);
//操作符new创建法的简写
let arr = Array(element0, element1, ..., elementN);         


// let arr=[4] 和 let arr=new Array(4)是不等效的,
// 后者4指数组长度,所以使用字面值(literal)的方式应该不仅仅是便捷,同时也不易踩坑

2.访问数组元素

arr[索引];

3.多维数组

数组是可以嵌套的, 这就意味着一个数组可以作为一个元素被包含在另外一个数组里面。利用JavaScript数组的这个特性, 可以创建多维数组。

以下代码创建了一个二维数组。

let a = new Array(4);
for (i = 0; i < 4; i++) {
  a[i] = new Array(4);
  for (j = 0; j < 4; j++) {
    a[i][j] = "[" + i + "," + j + "]";
  }
}

这个例子创建的数组拥有以下行数据:

Row 0: [0,0] [0,1] [0,2] [0,3]
Row 1: [1,0] [1,1] [1,2] [1,3]
Row 2: [2,0] [2,1] [2,2] [2,3]
Row 3: [3,0] [3,1] [3,2] [3,3]

4.迭代方法

4.1every() 方法

对数组每一个元素都运行传入的函数,如果每一个元素都返回 true,则这个方法返回 true。

注意:若收到一个空数组,此方法在一切情况下都会返回 true。

const isBelowThreshold = (currentValue) => currentValue < 40;

const array1 = [1, 30, 39, 29, 10, 13];

console.log(array1.every(isBelowThreshold));
// expected output: true

4.2filter() 方法

对数组每一个元素都运行传入的函数,函数返回 true的元素组成数组之后返回。

const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];

const result = words.filter(word => word.length > 6);

console.log(result);
// expected output: Array ["exuberant", "destruction", "present"]

4.3forEach() 方法

对数组每一个元素都运行传入的函数。

const array1 = ['a', 'b', 'c'];

array1.forEach(element => console.log(element));

// expected output: "a"
// expected output: "b"
// expected output: "c"

4.4map() 方法

对数组每一个元素都运行传入的函数,返回由每次函数调用的结果构成的数组。

const array1 = [1, 4, 9, 16];

// pass a function to map
const map1 = array1.map(x => x * 2);

console.log(map1);
// expected output: Array [2, 8, 18, 32]

4.5some() 方法

对数组每一个元素都运行传入的函数,如果有一个元素返回true,则这个方法返回true。

注意:如果用一个空数组进行测试,在任何情况下它返回的都是false。

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

// checks whether an element is even
const even = (element) => element % 2 === 0;

console.log(array.some(even));
// expected output: true

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/frond/javascript/4736.html

发表评论

登录后才能评论