javascript常用数组API

数组 API

1 . 插入 / 删除

arr.push(value1,[value2,value3]);  // 在数组末尾追加元素 (1)修改原数组 (2)返回新数组的length (3)追加进去的数组不会被打散
arr.pop(); // 删除数组末尾元素   (1)修改原数组 (2)返回被删除的元素

arr.unshift(value1, value2......); // 在数组开头插入元素 (1)修改原数组 (2)返回新数组的length
arr.shift(); // 在数组开头删除元素 (1)修改原数组  (2)返回被删除的元素

2 . 转字符串 ( 4 )

String(arr);  
arr.toString();  // 将数组中的元素用逗号连接成字符串

arr.join("连接符");  // 用连接符把数组里面的元素连接成字符串  (1)arr.join("")能无缝连接

arr.toLocaleString();  // 将数组转换为本地化字符串。它首先调用所有数组元素的 toLocaleString() 方法,然后使用地区特定的分隔字符将结果字符串连接起来。

3. 拼接

// (1)不会修改原数组,返回新数组;  (2)如果传给 concat() 的某个参数本身是一个数组,则会将该数组的元素衔接到 arr 中,而不是数组本身
arr.concat("a","b",arr1);  

var arr = [1,2,3];
arr.concat([4,5]); // [1,2,3,4,5]
arr.concat(4, [5, [6, 7]); // [1,2,3,4,5,[6,7]];

4. slice / splice

arr.slice(begin,end]); // 截取数组  (1)不会修改原数组 (2)返回新的子数组包含begin索引,不包括end索引元素
					 // (3)省略第二个参数表示从begin位置开始一直截取到末尾 (4)索引可以取负,对应加上数组长度的元素

arr.splice();   // 删除、插入、替换  (1)会影响原数组
arr.splice(开始删除的索引,删除的个数);  				  // 删除  (2)返回被删除项组成的新数组
arr.splice(插入项在新数组中的索引,0,一个或多个插入项);     // 插入  (2)返回空数组
arr.splice(开始删除的索引,删除的个数,一个或多个插入项);	   // 替换  (2)返回被删除项组成的新数组,插入项会接在被删除项位置

5. 翻转 / 排序

arr.reverse();  // 翻转数组  (1)直接修改原数组

arr.sort();  // 数组排序  (1)直接修改原数组   (2)默认按照数组元素第一位的ASCII码从小到大排列
// 升序(只限数组中是数字或者数字字符串)
arr.sort(function(a,b){
    // 返回值大于0,ab进行交换;<=0,保持位置不变
	return a-b;  // b-a 降序
});
// 随机打乱数组(数组中可以是任何数据类型)
arr.sort(function(){
    return Math.random()>.5 ? 1 : -1; 
});

6. 查找

arr.indexOf(value); // 查找给定元素在数组中的第一个索引,没有则返回-1
arr.lastIndexOf(value); // 查找给定元素在数组中的最后一个索引,没有则返回-1
arr.includes(value);  // 表示某个值是否在数组里,不接受函数参数, 返回true或false


arr.find(fn()); // 找出第一个符合条件的数组成员,没找到返回 undefined
const persons = [
    {id: 1, name: 'Jim', age: 22},
    {id: 2, name: 'Alen', age: 17},
    {id: 3, name: 'Lily', age: 20}
]
let a = persons.find(person => {
    return person.id === 2;
});
console.log(a) // {id: 2, name: 'Alen', age: 17}


arr.findIndex(fn()); // 找出第一个符合条件的数组成员的位置,没找到返回 -1
const persons = [
    {id: 1, name: 'Jim', age: 22},
    {id: 2, name: 'Alen', age: 17},
    {id: 3, name: 'Lily', age: 20}
]
let a = persons.findIndex(person => {
    return person.id === 2;
});
console.log(a) // 1

7. 遍历

// (item 每一个子项,index 索引,arr 原数组) 修不修改原数组取决于匿名函数中对原数组处理与否
// 以下API的匿名函数中thsi指向window,当然我们可以使用箭头函数进行修改

// 纯遍历
arr.forEach(function(item,index,arr){}); // forEach 匿名函数中的return 用于中止单次循环,整体并没有返回值(undefined)
arr.map(function(item,index,arr){}); // map 会创建一个新的数组,数组取自匿名函数中return的每一项


// 可中断遍历
arr.some(function(item,index,arr){});  // 只要return true 就退出循环 (判断是否存在元素符合条件)
arr.every(function(item,index,arr){});  // 只要return false 就退出循环 (判断是存在否不符合条件元素)


// 过滤
arr.filter(function(item,index,arr){});  // 按条件过滤,返回过滤后的数组

8. 归并

// 归并: 当前项的值作为参数给下一项使用
// (preValue:上一次调用返回的值/初始值,curValue:被处理的当前项,index:当前项的索引,array:原数组)
// initValue 初始值,当不指定初始值时,它将使用数组的第一个元素作为初始值。
// 因此,当不选定初始值时,index从1开始;传入初始值 index 才会从0开始
reduce(function(preValue,curValue,index,array){},initValue);
reduceRight(function(preValue,curValue,index,array){},initValue); // 数组从右向左开始归并,用法同理
posted @ 2021-10-24 20:57  陌路旧夜  阅读(34)  评论(0编辑  收藏  举报