JS数组常⽤的操作⽅法
1. push() 将⼀个或多个元素添加到数组的末尾,并返回该数组的新长度。此⽅法修改原有数组。
var arr =['a','b','c'];
var ele = arr.push('d');
// ele结果为: 4;
// arr数组被修改: ['a','b','c','d'];
2. pop(),从数组中删除最后⼀个元素,并返回该元素的值。如果数组为空,则返回undefined。此⽅法修改原有数组。
var arr =['a','b','c','d'];
var ele = arr.pop();
// ele结果为: 'd';
// arr数组被修改: ['a','b','c'];
3. shift(),从数组中删除第⼀个元素,并返回该元素的值。此⽅法修改原有数组。
var arr =['a','b','c','d'];
var ele = arr.shift();
// ele结果为: 1;
// arr数组被修改: ['b''c','d'];
4. unshift(),将⼀个或多个元素添加到数组的开头,并返回该数组的新长度。此⽅法修改原有数组。
var arr =['a','b','c'];
var ele = arr.unshift('d');
// ele结果为: 4;
// arr数组被修改: ['d','a','b','c'];
5. slice(begin?,end?),返回⼀个新的数组对象,这⼀对象是⼀个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变。
begin 可选 提取起始处的索引(从0开始),从该索引开始提取原数组元素
如果该参数为负数,则表⽰从原数组中的倒数第⼏个元素开始提取,slice(-2) 表⽰提取原数组中的倒数第⼆个元素到最后⼀个元素(包含最后⼀个元素)。
如果省略 begin,则 slice 从索引 0 开始。
如果 begin 超出原数组的索引范围,则会返回空数组。
end 可选 提取终⽌处的索引(从 0 开始),在该索引处结束提取原数组元素。slice 会提取原数组中索引从 begin 到 end 的所有元素(包含 begin,但不包含 end)。
slice(1,4) 会提取原数组中从第⼆个元素开始⼀直到第四个元素的所有元素 (索引为 1, 2, 3的元素)。
如果该参数为负数, 则它表⽰在原数组中的倒数第⼏个元素结束抽取。 slice(-2,-1) 表⽰抽取了原数组中的倒数第⼆个元素到最后⼀个元素(不包含最后⼀个元素,也就是只有倒数第⼆个元素)。
如果 end 被省略,则 slice 会⼀直提取到原数组末尾。
如果 end ⼤于数组的长度,slice 也会⼀直提取到原数组末尾。
var arr =['a','b','c','d'];
var res = arr.slice(0,2);
// arr数组未被修改: ['a', 'b', 'c', 'd'];
// res数组为: ['a', 'b'];
6. splice(start,deleteCount?,item1?) ,通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容(如果只删除了⼀个元素,则返回只包含⼀个元素的数组。如果没有删除元素,则返回空数组)。此⽅法修改原数组。
start:
指定修改的开始位置(从0计数)。如果超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表⽰从数组末位开始的第⼏位(从-1计数,这意味着-n是倒数第n个元素并且等价于array.length-n);如果负数的绝对值⼤于数组的长度,则表⽰开始位置为第0位。
deleteCount (可选):
整数,表⽰要移除的数组元素的个数。
如果 deleteCount ⼤于 start 之后的元素的总数,则从 start 后⾯的元素都将被删除(含第 start 位)。
如果 deleteCount 被省略了,或者它的值⼤于等于array.length - start(也就是说,如果它⼤于或者等于start之后的所有元素的数量),那么start之后数组的所有元素都会被删除。
如果 deleteCount 是 0 或者负数,则不移除元素。这种情况下,⾄少应添加⼀个新元素。
item1, item2, … (可选):
要添加进数组的元素,从start 位置开始。如果不指定,则 splice() 将只删除数组元素。
var arr =['a','b','c','d'];
// 从索引 2 的位置开始删除 0 个元素,插⼊"e"
var insertOnce = arr.splice(2,0,'e');
insertOnce =[]
arr =['a','b','e','c','d']
// 从索引3的位置开始删除⼀个元素
var delOnce = arr.splice(3,1);
// delOnce数组为: ['c']
// arr数组被修改: ['a', 'b', 'e', 'd']
7. concat(),于合并两个或多个数组。此⽅法不会更改现有数组,⽽是返回⼀个新数组。
var arr1 =['a','b','c','d'];
var arr2 =['e','f']
var arr3 = at(arr2);
// arr3数组为: ['a', 'b', 'c', 'd','e','f']
8. join(),将⼀个数组(或⼀个类数组对象)的所有元素连接成⼀个字符串并返回这个字符串。如果数组只有⼀个项⽬,那么将返回该项⽬⽽不使⽤分隔符(默认使⽤’,'分隔,如果使⽤"",则所有元素之间都没有任何字符)。
var arr =['a','b','c','d'];
var str = arr.join("-")
// str结果为: "a-b-c-d"
9. sort(),对数组的元素进⾏排序。此⽅法修改原数组。
var arr =[1,5,2,4,3]
arr.sort()
// arr数组被修改: [1,2,3,4,5]
10. reverse(),将数组中元素的位置颠倒,并返回该数组。数组的第⼀个元素会变成最后⼀个,数组的最后⼀个元素变成第⼀个。该⽅法修改原数组。
var arr =[1,2,3,4,5];
// arr数组被修改: [5,4,3,2,1]
11. forEach(function(currentValue,index?,array?),thisValue?),对数组的每个元素执⾏⼀次给定的函数。
currentValue 必选 当前元素的值
index 可选 当前元素的索引值
array 可选 当前元素属于的数组对象
thisValue 可选 执⾏callback函数时值被⽤作 this。如果省略或传⼊null,undefined那么callback函数的this为全局对象
function logArrayElements(element, index, array){
console.log('a['+ index +'] = '+ element);
}
// 注意索引 2 被跳过了,因为在数组的这个位置没有项
[2,5,,9].forEach(logArrayElements);
// logs:
// a[0] = 2
// a[1] = 5
// a[3] = 9
12. map(function(currentValue,index?,array?),thisValue?),创建⼀个新数组,其结果是该数组中的每个元素是调⽤⼀次提供的函数后的返回值。
// 使⽤ map 重新格式化数组中的对象
var kvArray =[{key:1, value:10},
{key:2, value:20},
{key:3, value:30}];
var reformattedArray = kvArray.map(function(obj){
var rObj ={};
rObj[obj.key]= obj.value;
return rObj;
});
// reformattedArray 数组为: [{1: 10}, {2: 20}, {3: 30}],
// kvArray 数组未被修改:
// [{key: 1, value: 10},
// {key: 2, value: 20},
js合并两个数组// {key: 3, value: 30}]
13. filter(function(currentValue,index,arr), thisValue),创建⼀个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
// 筛选出字符串数组中长度⼤于6的字符串
const words =['spray','limit','elite','exuberant','destruction','present'];
const result = words.filter(word => word.length >6);
console.log(result);
// log: ["exuberant", "destruction", "present"]
14. every(function(currentValue,index,arr), thisValue),测试⼀个数组内的所有元素是否都能通过某个指定函数的测试。它返回⼀个布尔值(若收到⼀个空数组,此⽅法在⼀切情况下都会返回 true)。
// 检查是否数组中的所有数字都⼩于40
const isBelowThreshold=(currentValue)=> currentValue <40;
const array1 =[1,30,39,29,10,13];
console.log(array1.every(isBelowThreshold));
// log: true
15. some(function(currentValue,index,arr), thisValue),测试数组中是不是⾄少有1个元素通过了被提供的函数测试。它
返回的是⼀个Boolean类型的值(如果⽤⼀个空数组进⾏测试,在任何情况下它返回的都是false)。
// 检测数组中是否⾄少有⼀个数字⼤于 18:
var ages =[3,10,18,20];
function checkAdult(age){
return age >=18;
}
function myFunction(){
}
16. find(function(currentValue,index,arr), thisValue),返回数组中满⾜提供的测试函数的第⼀个元素的值。否则返回undefined。
// 获取数组中第⼀个⼤于10的值
const array1 =[5,12,8,130,44];
const found = array1.find(element => element >10);
console.log(found);
// expected output: 12
17. flat(depth?),按照⼀个可指定的深度递归遍历数组,并将所有元素与遍历到的⼦数组中的元素合并为⼀个新数组返回。此⽅法不会改变原数组。
depth 可选 指定要提取嵌套数组的结构深度,默认值为 1。
const arr1 =[0,1,2,[3,4]];
console.log(arr1.flat());
// log: [0, 1, 2, 3, 4]
const arr2 =[0,1,2,[[[3,4]]]];
console.log(arr2.flat(2));
// log: [0, 1, 2, [3, 4]]
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论