JavaScript 中的数组有点类似于 Java 中的 List 但是又比Java中的List更加灵活,JavaScript中的数组还有点双端队列的意思,因为可以pop和push元素等操作。
定义数组
JavaScript
1 2 3 4 5 6 7 8 9 10 11 12
| var arr = []; var arr = [1, 2, 3]; var arr = ['apple', 'banana', 'orange'];
var arr = new Array(); var arr = new Array(1, 2, 3); var arr = new Array('apple', 'banana', 'orange');
var arr = Array.from([1, 2, 3]);
var arr = [...[1, 2, 3]];
|
Java
1 2 3 4 5 6 7 8 9 10 11 12 13
| int[] arr = {}; int[] arr = {1, 2, 3}; String[] fruits = {"apple", "banana", "orange"};
int[] arr = new int[5]; String[] names = new String[3];
int[] arr = new int[]{1, 2, 3}; String[] fruits = new String[]{"apple", "banana", "orange"};
|
合并数组
- 使用
concat()
1 2 3 4
| var arr1 = [1, 2, 3]; var arr2 = [4, 5, 6]; var mergedArr = arr1.concat(arr2); console.log(mergedArr);
|
- 使用扩展运算符
1 2 3 4
| var arr1 = [1, 2, 3]; var arr2 = [4, 5, 6]; var mergedArr = [...arr1, ...arr2]; console.log(mergedArr);
|
- 使用
push() 方法和循环
1 2 3 4 5 6
| var arr1 = [1, 2, 3]; var arr2 = [4, 5, 6]; for (var i = 0; i < arr2.length; i++) { arr1.push(arr2[i]); } console.log(arr1);
|
清空数组
- 将数组长度设置为0:
1 2 3
| var arr = [1, 2, 3]; arr.length = 0; console.log(arr);
|
- 使用
splice() 方法:
1 2 3
| var arr = [1, 2, 3]; arr.splice(0, arr.length); console.log(arr);
|
- 使用赋值空数组的方式:
1 2 3
| var arr = [1, 2, 3]; arr = []; console.log(arr);
|
这些方法都可以将数组清空,使其不包含任何元素。请注意,这些方法都会修改原始数组。
添加元素
- 使用
push() 方法:可以向数组的末尾添加一个或多个元素。
1 2 3
| var arr = [1, 2, 3]; arr.push(4); console.log(arr);
|
- 使用
unshift() 方法:可以向数组的开头添加一个或多个元素。
1 2 3
| var arr = [2, 3, 4]; arr.unshift(1); console.log(arr);
|
- 使用
splice() 方法:可以在指定位置插入一个或多个元素。
1 2 3
| var arr = [1, 2, 4]; arr.splice(2, 0, 3); console.log(arr);
|
- 使用数组索引赋值的方式:直接通过索引为数组添加元素。
1 2 3 4
| var arr = []; arr[0] = 1; arr[1] = 2; console.log(arr);
|
这些方法都可以用于向数组中添加元素。请注意,这些方法都会修改原始数组。
数组排序
sort() 方法默认按照字符串的Unicode编码进行排序。
1 2 3
| var arr = [3, 1, 2, 5, 4]; arr.sort(); console.log(arr);
|
如果要按照其他规则进行排序,可以传递一个比较函数作为 sort() 方法的参数。比较函数接受两个参数,通常被称为 a 和 b ,代表数组中的两个元素。比较函数应返回一个负值、零或正值,以指示两个元素的相对顺序。
1 2 3 4 5
| var arr = [3, 1, 2, 5, 4]; arr.sort(function(a, b) { return a - b; }); console.log(arr);
|
需要注意的是, sort() 方法会修改原始数组,并且对于包含字符串的数组,排序结果可能不符合预期。因此,在排序之前最好确保数组中的元素类型是一致的。
从对象数组中筛选指定的属性为某值的元素
使用JavaScript的 filter() 方法来从对象数组中筛选指定属性为某个值的元素。 filter() 方法接受一个回调函数作为参数,该回调函数用于定义筛选的条件。
以下是一个示例,演示如何从对象数组中筛选 age 属性为 25 的元素:
1 2 3 4 5 6 7 8 9 10 11 12
| var persons = [ { name: 'Alice', age: 25 }, { name: 'Bob', age: 30 }, { name: 'Charlie', age: 25 }, { name: 'Dave', age: 40 } ];
var filteredPersons = persons.filter(function(person) { return person.age === 25; });
console.log(filteredPersons);
|
上述示例中, filter() 方法使用一个回调函数,该函数以每个数组元素作为参数进行调用。在回调函数中,我们定义了筛选的条件,即 person.age === 25 ,如果该条件为真,则该元素将被保留在筛选后的数组中。
运行上述代码将输出以下结果:
1 2 3 4
| [ { name: 'Alice', age: 25 }, { name: 'Charlie', age: 25 } ]
|
上述结果是从 persons 数组中筛选出 age 属性为 25 的元素。