向数组末尾添加一个或多个元素,并返回新的数组长度,添加多个元素时用 " , " 隔开。
push()方法会改变原数组,即向原数组中添加一个或多个元素。
语法:
array.push(element1, element2, ... , elementN)
示例:
let arr = [1,2,3,4];
let length = arr.push(8,9)
console.log(arr); // [ 1, 2, 3, 4, 8, 9 ]
console.log(length); // 6
从数组末尾移除一个元素,并返回该元素。
pop()方法会改变原数组,即从原数组中移除一个元素。
语法:
array.pop()
示例:
let arr = [10,20,30,40];
let res = arr.pop()
console.log(arr); // [ 10, 20, 30 ]
console.log(res); // 40
注意:
如果pop()方法应用于一个空数组,它将返回undefined。因此,在使用pop()方法前,最好先检查数组是否为空
从数组开头移除一个元素,并返回该元素。
shift()方法会改变原数组,即从原数组中移除一个元素。
语法:
array.shift()
示例:
let arr = [10,20,30,40];
let res = arr.shift()
console.log(arr); // [ 20, 30, 40 ]
console.log(res); // 10
注意:
如果shift()方法应用于一个空数组,它将返回undefined。因此,在使用shift()方法前,最好先检查数组是否为空
向数组开头添加一个或多个元素,并返回新的数组长度,添加多个元素时用 " , " 隔开。
unshift()方法会改变原数组,即向原数组开头添加一个或多个元素。
语法:
array.unshift(element1, element2, ... , elementN)
示例:
let arr = [10,20,30,40];
let length = arr.unshift(100,200)
console.log(arr); // [ 100, 200, 10, 20, 30, 40 ]
console.log(length); // 6
向数组中添加或删除元素,并返回被删除的元素。
splice()方法会改变原数组,即向原数组中添加或删除元素。
语法:
array.splice(start, deleteCount, item1, item2, ..., itemN)
参数说明:
返回值:
示例:
let arr = [1, 2, 3, 4, 5];
let deleted = arr.splice(1, 2, 'a', 'b', 'c');
console.log(deleted); // 输出 [2, 3]
console.log(arr); // 输出 [1, 'a', 'b', 'c', 4, 5]
容易看出,splice()方法可以用于添加、删除或替换数组中的元素。
反转数组中元素的顺序,并返回反转后的数组。
reverse()方法同时会改变原数组
语法:
array.reverse()
示例:
let arr = [1, 2, 3, 4, 5];
let res = arr.reverse();
console.log(arr); // [5, 4, 3, 2, 1]
console.log(res); // [5, 4, 3, 2, 1]
用于对数组进行排序,会改变原数组
语法:
array.sort(compareFunction)
参数说明:
返回值:
此方法会修改原数组,也会返回排序后的新数组。
比较函数的参数:
比较函数的返回值:
示例:
1.compareFunction比较函数被省略,则按ASCII字符顺序排序
let arr = ['banana', 'apple', 'orange', 'pear'];
arr.sort();
console.log(arr); // ['apple', 'banana', 'orange', 'pear']
2.如果一个数组元素是数字,此时还是用sort()为数组排序:
let arr = [1, 3, 15, 4, 2];
arr.sort();
console.log(arr); // [ 1, 15, 2, 3, 4 ]
之所以出现这种情况,是因为sort(方法会调用每个数组项的toString()方法,得到字符串,然后再对得到的字符串进行排序。虽然数值15比3大,但在进行字符串比较时"15"则排在"3"前面(ASCII字符顺序)。
此时,compareFunction比较函数就起到了作用:
let arr = [1, 3, 15, 4, 2];
arr.sort(function(a,b){
return a-b
});
console.log(arr); // [ 1, 2, 3, 4, 15 ]
3.按对象属性排序
let arr = [
{name: 'Tom', age: 20},
{name: 'Jerry', age: 18},
{name: 'Lucy', age: 22}
];
arr.sort(function(a, b) {
return a.age - b.age;
});
console.log(arr); // [{name: 'Jerry', age: 18}, {name: 'Tom', age: 20}, {name: 'Lucy', age: 22}]
从原数组中截取一段元素,生成一个新的数组。不会修改原数组。
语法:
array.slice(start, end)
参数说明:
返回值:
该方法会返回一个新的数组。
示例:
let arr = ['apple', 'banana', 'orange', 'pear', 'grape'];
let newArr = arr.slice(1, 3);
console.log(newArr); // ['banana', 'orange']
console.log(arr); // ['apple', 'banana', 'orange', 'pear', 'grape']
将两个或多个数组合并成一个新数组,并返回新数组。不会修改原数组。
语法:
array.concat(array1, array2, ..., arrayN)
参数说明:
返回值:
该方法会返回一个新的数组,新数组中包含原数组和所有参数数组中的元素。
示例:
let arr1 = ['apple', 'banana'];
let arr2 = ['orange', 'pear'];
let arr3 = ['grape'];
let newArr = arr1.concat(arr2, arr3);
console.log(newArr); // ['apple', 'banana', 'orange', 'pear', 'grape']
console.log(arr1); // ['apple', 'banana']
console.log(arr2); // ['orange', 'pear']
console.log(arr3); // ['grape']
将数组中的所有元素转换为一个字符串,并返回该字符串。不会修改原数组。
语法:
array.join(separator)
参数说明:
返回值:
该方法会返回一个字符串,该字符串由数组中所有元素组成,元素之间使用separator分隔。
示例:
let arr = ['apple', 'banana', 'orange'];
let str1 = arr.join('-');
let str2 = arr.join();
console.log(str1); // 输出:'apple-banana-orange'
console.log(str2); // 输出:'apple,banana,orange'
查找指定的元素在数组中第一次出现的位置(索引)。不会修改原数组。
语法:
array.indexOf(searchElement, fromIndex)
参数说明:
返回值:
返回指定元素在数组中第一次出现的位置,如果不存在则返回-1。
示例:
let arr = [1, 2, 3, 4, 5];
console.log(arr.indexOf(3)); // 输出:2
console.log(arr.indexOf(6)); // 输出:-1
console.log(arr.indexOf(3, 2)); // 输出:2 (从索引2开始查找)
console.log(arr.indexOf(3, 3)); // 输出:-1 (从索引3开始查找,但是没找到)
注意:
indexOf()方法使用“全等比较”(===)来判断元素是否相等,因此对于复杂类型的元素(如对象、数组等),只有在引用地址相同的情况下才能被认为是相等的。
查找指定元素在数组中最后一次出现的位置(索引)。
其他同indexOf()方法。
筛选数组中符合条件的元素,返回一个新的数组。
语法:
array.filter(callback(element, index, array){ return 条件(布尔值)})
参数:
返回值:
示例:
let arr = [1, 2, 3, 4, 5];
let newArr = arr.filter(function(item) {
return item > 2;
});
console.log(newArr); // 输出:[3, 4, 5]
注意:
callback函数中不应该修改原始数组的值
接受一个回调函数作为参数,可以将数组中的元素迭代为单个值。
语法:
array.reduce(callback(prev,element, index, array){ },initialValue)
其中,callback 函数接收四个参数:
initialValue 参数是可选的,如果传递了 initialValue,则作为第一次调用 callback 函数时的 accumulator 值。如果没有传递,则将使用数组的第一个元素作为初始值。
reduce() 方法执行时,从数组的第一个元素开始迭代,依次传递每个元素给回调函数。在每次迭代时,回调函数返回的值将成为下一次迭代时的 prev值。
最后,reduce() 方法返回 prev 的值。如果数组是空的,并且没有传递 initialValue,那么它将抛出 TypeError。如果数组只有一个元素(无论是否传递了 initialValue),则不执行回调函数,直接将这个元素作为 reduce() 方法的返回值。
示例,使用 reduce() 方法计算数组中所有元素的和:
let arr = [1, 2, 3, 4, 5];
let sum = arr.reduce((prev, element) => {
return prev + element;
}, 0);
console.log(sum); // 输出 15
查找数组中满足条件的第一个元素,并返回该元素的值。如果没有找到满足条件的元素,则返回 undefined。
语法:
array.find(callback(element, index, array){ return 条件(布尔值)})
其中,callback 函数接收三个参数:
find() 方法执行时,从数组的第一个元素开始迭代,依次传递每个元素给回调函数。当回调函数返回 true 时,find() 方法返回该元素的值,并停止迭代。如果数组中没有满足条件的元素,则返回 undefined。
示例,使用 find() 方法查找数组中第一个大于 3 的元素:
let arr = [1, 2, 3, 4, 5];
let result = arr.find((element) => {
return element > 3;
});
console.log(result); // 输出 4
注意:
find() 方法只会返回第一个满足条件的元素,并不会返回所有满足条件的元素。如果需要查找所有满足条件的元素,可以使用 filter() 方法。
查找数组中满足条件的第一个元素,并返回该元素的索引。如果没有找到满足条件的元素,则返回 -1。
其他同find()方法。
用于对数组中的每个元素执行一次指定的操作。该方法没有返回值,只是在数组的每个元素上执行指定的操作,替代了for循环使用。
语法:
array.forEach(callback(element, index, array){ })
其中,callback 函数接收三个参数:
forEach() 方法会依次遍历数组中的每个元素,并将每个元素传递给 callback 函数,让其执行指定的操作。在遍历过程中,不会对数组进行修改。
示例,使用 forEach() 方法对数组中的每个元素进行打印:
let arr = [1, 2, 3, 4, 5];
arr.forEach((element) => {
console.log(element);
});
对数组中的每个元素执行指定的操作,并将操作的结果存储在一个新的数组中。该方法返回一个新的数组,原数组不会被修改。
语法:
array.map(callback(element, index, array){ })
其中,callback 函数接收三个参数:
map() 方法会依次遍历数组中的每个元素,并将每个元素传递给 callback 函数,让其执行指定的操作。在遍历过程中,将每个元素的操作结果存储在新的数组中,并返回该数组。
示例,使用 map() 方法将数组中的每个元素都平方,并将平方后的结果存储在新的数组中:
let arr = [1, 2, 3, 4, 5];
let res = arr.map((element) => {
return element * element;
});
console.log(res); // 输出 [1, 4, 9, 16, 25]
检测数组中是否至少有一个元素满足指定条件。该方法返回一个布尔值,如果有至少一个元素满足条件,则返回 true,否则返回 false。
语法:
array.some(callback(element, index, array){return 条件 })
其中,callback 函数接收三个参数:
some() 方法会依次遍历数组中的每个元素,并将每个元素传递给 callback 函数,让其执行指定的判断条件。如果有至少一个元素满足条件,则返回 true,否则返回 false。
示例,使用 some() 方法检测数组中是否存在数字5:
let arr = [1, 2, 5, 4, 5, 6, 5];
let res = arr.some((element) => {
console.log(element)
return element === 5;
});
console.log(res); // 输出 1 2 5 true
注意:
some() 方法只要找到满足条件的元素就会停止遍历,不会继续执行。
检测数组中是否所有元素都满足指定条件。该方法返回一个布尔值,如果所有元素都满足条件,则返回 true,否则返回 false。
语法:
array.every(callback(element, index, array){return 条件 })
其中,callback 函数接收三个参数:
every() 方法会依次遍历数组中的每个元素,并将每个元素传递给 callback 函数,让其执行指定的判断条件。如果所有元素都满足条件,则返回 true,否则返回 false。
示例,使用 every() 方法检测数组中是否所有元素都为奇数:
let arr = [1, 3, 4, 7, 9];
let res = arr.every((element) => {
console.log(element);
return element % 2 === 1
});
console.log(res); // 输出 1 3 4 false
注意:
every() 方法只要找到一个不满足条件的元素就会停止遍历,不会继续执行。
该篇文章属个人对javaScript中数组方法的理解,如有不当之处,还请批评指正。