目录
数组常用方法汇总(" * " 代表改变原数组):
初始化一个数组:
// 实例化方式
var myArray = new Array(3,26,7,15,8);
// 字面量方式
var myArray = [3,26,7,15,8];
1. 数组排序
A. sort()方法
myArray.sort((a,b) => {
//return b-a; //从大到小排序
return a-b; //从小到大排序
})
console.log( myArray ); // [3, 7, 8, 15, 26]
B. 双重for循环方法
for (let i = 0; i < myArray.length; i++) {
for (let j = i + 1; j < myArray.length; j++) {
if (myArray[i] > myArray[j]) {
let temp = myArray[i];
myArray[i] = myArray[j];
myArray[j] = temp;
}
}
}
console.log(myArray); // [3, 7, 8, 15, 26]
2. 数组增删改查
A. 添加元素(push, unshift, splice)
// 向数组的末尾添加一个元素
myArray.push(10);
console.log(myArray); //[3, 26, 7, 15, 8, 10]
// 向数组的开头添加一个元素
myArray.unshift(49);
console.log(myArray); //[49, 3, 26, 7, 15, 8]
// 向数组的任意位置添加一个元素
// splice(index, num, value)
// index 代表元素的位置
// num 代表截取元素的个数,传0则表示添加元素
// value 代表需要添加或者修改的值,不传则代表删除所截取的元素
myArray.splice(3,0,11);
console.log(myArray); // [3, 26, 7, 11, 15, 8]
B. 删除元素(pop, shift, splice)
// 删除数组的最后一个元素
myArray.pop();
console.log(myArray); // [3, 26, 7, 15]
// 删除数组的第一个元素
myArray.shift();
console.log(myArray); // [26, 7, 15, 8]
// 删除数组任意位置的n个元素
myArray.splice(2,2);
console.log(myArray); // [3, 26, 8]
C. 修改元素
// 通过下标直接修改
myArray[1] = 9;
console.log(myArray); // [3, 9, 7, 15, 8]
// 通过splice方法修改
myArray.splice(4, 1, 33);
console.log(myArray); //[3, 26, 7, 15, 33]
D. 查找元素(find, findIndex, indexOf, lastIndexOf, includes)
// find方法 返回满足条件的第一个元素
let res = myArray.find(item => item > 20);
console.log(res); // 26
// findIndex方法 返回满足条件的第一个元素的索引
let res = myArray.findIndex(item => item == 15);
console.log(res); // 3
// indexOf 查找数组中指定的元素首次出现的位置
let res = myArray.indexOf(26);
console.log(res); // 1
// lastIndexOf 查找数组中指定的元素最后一次出现的位置
let res = myArray.lastIndexOf (10);
console.log(res); // -1 找不到返回-1
// includes 判断数组是否包含一个指定的值
let res = myArray.includes(7);
console.log(res); // true
3. 数组合并
let arr1 = [5,6,7];
A. concat()方法
let newArr = myArray.concat(arr1);
console.log(newArr); // [3, 26, 7, 15, 8, 5, 6, 7]
B. 展开运算符
let newArr = [...myArray,...arr1];
console.log(newArr); // [3, 26, 7, 15, 8, 5, 6, 7]
C. forEach遍历 + push方法
arr1.forEach(item => myArray.push(item));
console.log(myArray); // [3, 26, 7, 15, 8, 5, 6, 7]
4. 数组去重
- 数组里存放的是基本类型数据(数字、字符串等)-- Set方法
// 数字
let myArray1 = [2,6,7,15,3,6,8,10,7,9];
let filteredArray1 = Array.from(new Set(myArray1));
console.log(filteredArray1); // [2, 6, 7, 15, 3, 8, 10, 9]
// 字符串
let myArray2 = ['a','b','c','a','d','e','c'];
let filteredArray2 = [...new Set(myArray2)];
console.log(filteredArray2); // ['a', 'b', 'c', 'd', 'e']
- 数组里存放的是引用类型数据(对象) – 利用对象属性的唯一性去重
let objArray = [
{id: 0,name: "jake"},
{id: 1,name: "bob"},
{id: 1,name: "bob"},
{id: 2,name: "susan"},
{id: 3,name: "lili"}
];
function cutArray(arr){
let newArray = [];
let obj = {};
arr.map((item,index) => {
if(obj[item.id] == undefined){
obj[item.id] = 1;
newArray.push(item);
}else {
obj[item.id] += 1;
}
});
return newArray;
}
let filteredArray = cutArray(objArray);
console.log(filteredArray); //[{id: 0,name: "jake"},{id: 1,name: "bob"},{id: 2,name: "susan"},{id: 3,name: "lili"}]