方法有很多种,本文列举其中两种
声明一个数组
var arr = [5,4,3,2,1,5,3];
数组去重
1:利用ES6中的 Set 方法去重(最常用)
原理:
Set数据结构中所有元素都是唯一的,没有重复
Set 本身是一个构造函数,用来生成 Set 数据结构
// new Set(arr) 得到一个去重的set对象 // 通过 [] + 展开运算符 变成数组格式 console.log([...new Set(arr)]);
2:利用indexOf去重
原理:
indexof() 可返回某个指定的字符串值在字符串中首次出现的位置。如果没有检索到指定字符串,则返回-1
let newArr = []; for (let i = 0; i < arr.length; i++) { // 检索新数组中是否有重复元素,没有就push进新数组 if (newArr.indexOf(arr[i]) === -1) newArr.push(arr[i]); } console.log(newArr);
数组从大到小排序
1:sort方法
概念:
sort() 方法用于对数组的元素进行排序。
排序顺序可以是字母或数字,并按升序或降序。
默认排序顺序为按字母升序。
注意:当数字是按字母顺序排列时"40"将排在"5"前面。
使用数字排序,你必须通过一个函数作为参数来调用。
函数指定数字是按照升序还是降序排列。
注意: 这种方法会改变原始数组!。
// 数组排序 sort console.log(arr.sort(sort_s),'这是升序'); console.log(arr.sort(sort_j),'这是降序'); // 升序 function sort_s(a,b){ return a-b; } // 降序 function sort_j(a,b){ return b-a; }
2:冒泡排序
原理:
每次对相邻的两个元素进行比较,若前者大于后者则进行交换,
如此一趟下来最后一趟的就是最大元素,重复以上的步骤,除了已经确定的元素。
for(var i = 0; i < arr.length-1; i++){ //外层循环管趟数 for(var j = 0; j < arr.length-i-1; j++){ if(arr[j] < arr[j+1]){ var temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } console.log(arr);