JS中对数组的操作方法汇总

文章详细介绍了JavaScript中数组的常用操作,包括使用sort()方法和双重循环进行排序,使用push、unshift、splice等方法进行添加、删除和修改元素,以及find、findIndex等方法进行查找。此外,还讨论了concat()、展开运算符和forEach结合push的数组合并方式,以及Set和对象属性去重的方法。
摘要由CSDN通过智能技术生成


数组常用方法汇总(" * " 代表改变原数组):

在这里插入图片描述


初始化一个数组:

// 实例化方式
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"}]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值