js 数组常用方法总结


1.任意范围的随机整数

function randomInt(min,max){
     if(min > max){
         var t = min;
         min = max;
         max = t;
     }
     return Math.floor(Math.random() * (max - min + 1) + min);
}
console.log(1,10); //5

2.排序

 2.1 冒泡排序
//(从小到大)
function bubbleSortFromSmallToBig(arr){
    for(var i = 1;i < arr.length;i ++){
        for(var j = 0;j < arr.length - i;j ++){
            if(arr[j] > arr[j + 1]){
                var t = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = t;
            }
        }
    }
    return arr;
}
//(从大到小)
function bubbleSortFromBigToSmall(arr){
    for(var i = 1;i < arr.length;i ++){
        for(var j = 0;j < arr.length - i;j ++){
            if(arr[j] < arr[j + 1]){
                var t = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = t;
            }
        }
    }
    return arr;
}

2.2 选择排序
//从小到大
function selectionSortFromSmallToBig(arr){
	for(var i = 0;i < arr.length - 1;i ++){
	     for(var j = i + 1;j < arr.length;j ++){
	         if(arr[i] > arr[j]){
	             var t = arr[i];
	             arr[i] = arr[j];
	             arr[j] = t;
	         }
	     }
	}
	return arr;
}
//从大到小
function selectionSortFromBigToSmall(arr){
	for(var i = 0;i < arr.length - 1;i ++){
	     for(var j = i + 1;j < arr.length;j ++){
	         if(arr[i] < arr[j]){
	             var t = arr[i];
	             arr[i] = arr[j];
	             arr[j] = t;
	         }
	     }
	}
	return arr;
}

3.数组对象去重

function deteleObject(obj) {
      var uniques = [];
      var stringify = {};
      for (var i = 0; i < obj.length; i++) {
        var keys = Object.keys(obj[i]);
        keys.sort(function (a, b) {
          return Number(a) - Number(b);
        });
        var str = "";
        for (var j = 0; j < keys.length; j++) {
          str += JSON.stringify(keys[j]);
          str += JSON.stringify(obj[i][keys[j]]);
        }
        if (!stringify.hasOwnProperty(str)) {
          uniques.push(obj[i]);
          stringify[str] = true;
        }
      }
      uniques = uniques;
      return uniques;
 }
 var arr = [{val: "0", key: " 徐州市"},{val: "556", key: " 徐州经济技术开发区"},{val: "557", key: " 云龙区"},{val: "0", key: " 徐州市"},
{val: "556", key: " 徐州经济技术开发区"},{val: "557", key: " 云龙区"}];
console.log(deteleObject(arr)) //[{val: "0", key: " 徐州市"},{val: "556", key: " 徐州经济技术开发区"},{val: "557", key: " 云龙区"}]
// 数组对象 根据 id 去重
 function some(arr) {
     let some = [];
     arr.forEach(el => {
     if (!some.some(e => e.id== el.id)) {
         some.push(el);
     }
     });
     return some
 }

4.向一个数组对象里添加新的属性

var arry= [{a:11,b:22,c:33,d:44},{a:11,b:0,c:0,d:44},{a:11,b:22,c:99,d:99}];
var arry2=[];
arry.map(( function(item,index) {
    arry2.push(Object.assign({},item,{mess1:item.c,mess2:item.d}))
}))
console.log(arry2);//[{a: 11,b: 22,c: 33,d: 44,mess1: 33,mess2: 44},{a: 11,b: 0,c: 0,d: 44,mess1: 0,mess2: 44},{a: 11,b: 22,c: 99,d: 99,mess1: 99,mess2: 99}]

5.将一个数组里的对象拿出来变成另一个数组对象

var arry= [{a:11,b:22,c:33,d:44},{a:11,b:0,c:0,d:44},{a:11,b:22,c:99,d:99}];
var arry2=[];
arry.map(( function(item, index) {
    arry2.push(Object.assign({},{mess1:item.c,mess2:item.d}))
}))
console.log(arry2);//[{mess1: 33,mess2: 44},{mess1: 0,mess2: 44},{mess1: 99,mess2: 99}]

6.获取数组对象中指定的对象

var arr = [
    {name:"ming",age:16},
    {name:"dan",age:18},
    {name:"yue",age:22}
]
var filterArr = arr.filter(function(elem, index,arr){
    console.log(11,elem,index,arr)
    return elem.age>=18
})
console.log(filterArr);//[{name:"dan",age:18},{name:"yue",age:22}]

7.获取数组对象中具体的键或值

var arr = [{val : 1,key1 : 2},{val : 3,key : 4},{val : 5,key : 6},{val : 7,key : 8}];
var arr2 = arr.map(function(v) {
    return v.val;
});
console.log(arr2)  // [1, 3, 5, 7]

8.数组对象属性排序

let arr = [
    {name:'zopp',age:0},
    {name:'gpp',age:18},
    {name:'yjj',age:8}
];

function compareSort(property){
    return function(a,b){
        let value1 = a[property];
        let value2 = b[property];
        return value1 - value2;
    }
}
let resultSortArr = arr.sort(compareSort('age'));
console.log(resultSortArr) //[{name:'zopp',age:0},{name:'yjj',age:8},{name:'gpp',age:18}]

9. js删除数组中指定的对象

let arr = [
        {
          id: 1,
          name: "蔬菜类",
          value: 172
        },
        {
          id: 2,
          name: "畜禽类",
          value: 850
        },
        {
          id: 3,
          name: "水产类",
          value: 633
        },
        {
          id: 4,
          name: "粮油类",
          value: 833
        },
        {
          id: 5,
          name: "茶叶类",
          value: 542
        },
        {
          id: 6,
          name: "果品类",
          value: 318
        },
        {
          id: 7,
          name: "花卉类",
          value: 625
        },
        {
          id: 8,
          name: "其他类",
          value: 731
        }
 ];
 // 方法一
 let newArr = arr.filter(item => item.id !== 1);
 console.log("newArr", newArr);
 //方法二
 let newArr2 = arr.reduce((total, current) => {
   current.id !== 1 && total.push(current);
   return total;
 }, []);
 console.log("newArr2", newArr2);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值