js中数组方法合集

1、查找数组中包含指定元素的个数

   countNum(arr,res) {
		let newArrays = arr.filter((item)=>{
			return item == res;
		});
		return newArrays.length;
	},
    console.log(countNum(['1','2','1','3'] , '1')) // 2

2、去除数组中的空节点

    let arr = ['A', '', 'B', null, undefined, 'C', '  '];
    let r = arr.filter((s) => {
    return s && s.trim();  
    });
    console.log(r)  // ["A", "B", "C"]

  // rim()去掉数组array中空的值  
  // 注:IE9(不包含IE9)以下的版本没有trim()方法

3、数组去重

console.log([...new Set(arr)])
const filter = arr.filter(item=>item >= 3)
console.log(filter)
 function arrfun(arrs){
            let newArr = []
            let obj = {}
            for(let i = 0 ; i < arrs.length ; i++){
                if(!obj[arrs[i]]){
                    newArr.push(arrs[i])
                    obj[arrs[i]] = 1
                }else{
                    obj[arrs[i]] ++
                }
            }
            return newArr
        }
 console.log(arrfun(arr))

4、数组排序

    function sorts(a , b){
            // return a - b
            return b - a
        }
    console.log(arr.sort(sorts))
        // 定位排序
        for(let i = 0 ; i < arr.length ; i++){
            for(let j = i + 1 ; j < arr.length ; j++){
                if(arr[i] < arr[j]){
                    let temp = arr[i]
                    arr[i] = arr[j]
                    arr[j] = temp
                }
            }
        }
        console.log(arr)
        //  冒泡排序
        for (let i = 0; i < arr.length; i++) {
            for (let j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] < arr[j + 1]) {
                    let temp = arr[j]
                    arr[j] = arr[j + 1]
                    arr[j + 1] = temp
                }
            }
        }
        console.log(arr)
      // 快速排序
      function quick(ary) {
            //1.判断传入的数组长度,如果是一个就直接返回
            if (ary.length <= 1) {
                return ary;
            }
            //2.如果长度不为1,那么就取数组的中间值
            let contentIndex = Math.floor(ary.length / 2);
            let contentValue = ary.splice(contentIndex, 1)[0];
            //3.先定义左右两个数组,然后让数组中剩余的数与中间数进行比较,比中间数小的放到左边的数组,比中间数大的放到右边的数组。
            let leftArr = [];
            let rightArr = [];
            for (let i = 0; i < ary.length; i++) {
                let item = ary[i];
                item > contentValue ? rightArr.push(item) : leftArr.push(item);
            }
            //4.使用递归的方式让左右两边的数组持续这样处理,直至左右两边的数组都排好序,最后三者进行拼接

            return quick(leftArr).concat(contentValue, quick(rightArr));
        }
        arr = quick(arr);
        console.log(arr);

5、数组扁平化

        function flatten(arr) {
            return arr.flat(Infinity);
            }
        console.log(flatten(arr));
       function flatten(arr) {
            while (arr.some(item => Array.isArray(item))) {
                arr = [].concat(...arr);
            }
            return arr;
        }
       console.log(flatten(arrs));
      function flatArray(arr) {
            var result = [];
            for (var i = 0; i < arr.length; i++) {
                if (Array.isArray(arr[i])) {
                    result = result.concat(flatArray(arr[i]));
                } else {
                    result.push(arr[i]);
                }
            }
            return result;
        }
        console.log(flatArray(arrs))

6、找最大值最小值

const arr = [1, 2, 3]; 
Math.max(…arr); // 3
Math.min(…arr); // 1

7、slice()
语法:arr.slice(start , end)
备注:原数组不改变

let arr = [1 , 2 ,3]
let arr1 = arr.slice(1,2)
console.log(arr1 , arr) //[2] , [1 , 2 ,3]

8、splice()
语法:arr.splice(start,deleteCount,item1,item2….)
备注:

  • start参数 开始的位置
  • deleteCount 要截取的个数
  • 后面的items为要添加的元素
  • 如果deleteCount为0,则表示不删除元素,从start位置开始添加后面的几个元素到原始的数组里面
  • 改变原数组
let arr = [1 , 2 ,3]
let arr1 = arr.splice(0 ,1)
console.log(arr1 , arr) //[1] , [ 2 ,3]

let arr = [1 , 2 ,3]
let arr1 = arr.splice(1 ,0 , 2 , 4 , '5432')
console.log(arr1 , arr) //[0] , [1, 2, 4, '5432', 2, 3]

let arr = [1 , 2 ,3]
let arr1 = arr.splice(1 ,2 , 2 , 4 , '5432')
console.log(arr1 , arr) //[2 , 3] , [1, 2, 4, '5432']

let arr = [1 , 2 ,3]
let arr1 = arr.splice(1)
console.log(arr1 , arr) //[2 , 3] , [1]

9、push() 后增
备注:原数组改变

let arr = [1 , 2 ,3]
let arr1 = arr.push(2 , 4)
console.log(arr1) //5 返回数组长度
console.log(arr) //[1, 2, 3, 2, 4] 

10、unshift() 前增
备注:原数组改变

let arr = [1 , 2 ,3]
let arr1 = arr.unshift(2 , 4)
console.log(arr1) //5 返回数组长度
console.log(arr) //[ 2, 4 , 1, 2, 3] 

11、pop() 后删
备注:原数组改变

let arr = [1 , 2 ,3 , 12 , 533]
let arr1 = arr.pop()
console.log(arr1) //533 返回删除的那个元素
console.log(arr) //[ 1 , 2 ,3 , 12 ] 

12、shift() 前删
备注:原数组改变

let arr = [1 , 2 ,3 , 12 , 533]
let arr1 = arr.shift()
console.log(arr1) //1 返回删除的那个元素
console.log(arr) //[ 2 ,3 , 12 , 533] 

12、reverse() 数组翻转
备注:改变原数组不会创建原数组

let arr = [1 , 2 ,3 , 12 , 533]
let arr1 = arr.reverse()
arr1.push('1')
console.log(arr1) // [533, 12, 3, 2, 1, '1'] 
console.log(arr) //[ 533, 12, 3, 2, 1, '1'] 

13、toString()
备注:不会改变原数组,返回数组转为字符串并用逗号拼接

let arr = [1 , 2 ,3 , 12 , 533]
let arr1 = arr.toString()
console.log(arr1) // 1,2,3,12,533
console.log(arr) //[ 1 , 2 ,3 , 12 , 533] 

14、join()
备注:不会改变原数组,返回数组转为字符串并用逗号拼接

let arr = [1 , 2 ,3 , 12 , 533]
let arr1 = arr.join()
console.log(arr1) // 1,2,3,12,533
console.log(arr) //[ 1 , 2 ,3 , 12 , 533] 

let arr = ['1' , '2']
let arr1 = arr.join('+') 
console.log(arr1) // 1+2
console.log(arr) // ['1' , '2']

15、indexOf()

//判断数组中是否包含某个元素
let arr = [1,2,3,4,5,4,3,2,1];
console.log(arr.indexOf(1)); // 0
console.log(arr.indexOf(1,1)); // 8
console.log(arr.indexOf(9)); // -1

//判断字符串中是否包含某个字符的情景中:
var str = "Hello world! wo shi oll"
console.log(str.indexOf("World") == -1) //true
console.log(str.indexOf("world") == -1) //false

//查找字符串中某一字符从头开始第一次出现的索引
var str = "Hello world!"
console.log(str.indexOf("o")) //4
console.log(str.indexOf("Hello")) //0
console.log(str.indexOf("World")) //-1
console.log(str.indexOf("world")) //6

16、split()

let str = "background - color"
let strs1 = str.split('-')[0]
let strs2 = str.split(' ' , 1)
let strs3 = str.split(' ' , 2)
let strs4 = str.split(' ')
let strs5 = str.split('')
let strs6 = str.split()
  
console.log(strs1 , str) //background , background - color
console.log(strs2 , str) //['background'] , 'background - color'
console.log(strs3 , str) //['background', '-'] , 'background - color'
console.log(strs4 , str) //['background', '-', 'color'] , 'background - color'
console.log(strs5 , str) // ['b', 'a', 'c', 'k', 'g', 'r', 'o', 'u', 'n', 'd', ' ', '-', ' ', 'c', 'o', 'l', 'o', 'r'] , 'background - color'
console.log(strs6 , str) // ['background - color'] , 'background - color'

17、数组拼接

// concat()方法拼接;
// 不会更改现有数组,而是返回一个新数组。
let a = [1,2,3,4,5,6]
let b = ['喵喵','旺财','大黄']
let c = a.concat(b)
console.log(a)//[1, 2, 3, 4, 5, 6]
console.log(b)//['喵喵','旺财','大黄']
console.log(c);//[1,2,3,4,5,6,'喵喵','旺财','大黄']

//循环拼接
let a = [1,2,3,4,5,6]
let b = ['喵喵','旺财','大黄']
for(let i=0;i<b.length;i++){
    a.push(b[i])
}
console.log(a);//[1,2,3,4,5,6,'喵喵','旺财','大黄']

//push.apply()方法拼接
//push.apply合并数组是把后一个数组的值依次push进前一个数组,使前一个数组发生改变
let a = [1,2,3,4,5,6]
let b = ['喵喵','旺财','大黄']
a.push.apply(a,b)
console.log(a);//[1,2,3,4,5,6,'喵喵','旺财','大黄']

//es6结构赋值
let a = [1,2,3,4,5,6]
let b = ['喵喵','旺财','大黄']
a.push(...b)
console.log(a);//[1,2,3,4,5,6,'喵喵','旺财','大黄']

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值