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