JS中数组排序和去重

JS中的数组排序和去重

数组排序方法

1.使用数组arr.reverse();

将原始数据倒置未实际排序

  let arr = [10,20,12,4,5,6,1,50,123];
  let result = arr.reverse();
  console.log(result); //=>输出结果[123, 50, 1, 6, 5, 4, 12, 20, 10]

2.使用arr.sort()排序

   let arr = [10,20,12,4,5,6,1,50,123];
          arr.sort(function(a,b){
              return a - b; //=>正序a-b,倒序b-a
          });
   console.log(arr); //=>[1, 4, 5, 6, 10, 12, 20, 50, 123]
   

3.冒泡排序

利用数据两两比较,数据小的靠前排列

        var arr = [10, 20, 12, 4, 5, 6, 1, 50, 123];
        var arrSorted = bubbleSort(arr);
        function bubbleSort(arr) {
            for (var i = 0; i < arr.length - 1; i++) {
                for (var j = 0; j < arr.length - 1 - i; j++) {
                    if (arr[j] > arr[j + 1]) {
                        var temp = arr[j + 1];
                        arr[j + 1] = arr[j];
                        arr[j] = temp;
                    }
                }
            }
            return arr;
        }
         console.log(arr); //=>[1, 4, 5, 6, 10, 12, 20, 50, 123]

数组中的去重

1.利用双for去重

let arr = [1, 2, 3, 4, 5, 2, 34, 1, 3, 4, 34, '10', '10'];
            for (let i = 0; i < arr.length - 1; i++) {
                let item = arr[i];
                for (let j = i + 1; j < arr.length; j++) {
                    if (item === arr[j]) {                 
                        arr[j] = arr[arr.length - 1]; //用最后一项替换当前项
                         arr.length--; //将最后一项删掉
                         j--; //下一次还和这一项比较
                    }
                }
            }
  console.log(arr);//=>输出结果 [1, 2, 3, 4, 5, 34, '10']            

2.利用键值对去重

let arr = [1, 2, 3, 4, 5, 2, 34, 1, 3, 4, 34, '10', '10'];
let obj = {};
        for (let i = 0; i < arr.length; i++) {
            let item = arr[i];
            if (obj[item] !== undefined) {
                arr[i] = arr[arr.length - 1];
                arr.length--;
                i--;
                continue;
            }
            obj[item] = item;
        }
 console.log(arr);//=>输出结果 [1, 2, 3, 4, 5, 34, '10']

3.ES6中set数据结构去重

let arr = [1, 2, 3, 4, 5, 2, 34, 1, 3, 4, 34, '10', '10'];
arr = Array.from(new Set(arr));
console.log(arr); //=>输出结果 [1, 2, 3, 4, 5, 34, '10']
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
可以使用以下方法来实现JavaScript数组去重排序: 方法一:使用Set和Array.from() ```javascript let arr = \[1, 2, 3, 3, 1, 4\]; let uniqueArr = Array.from(new Set(arr)).sort((a, b) => a - b); console.log(uniqueArr); ``` 这个方法首先使用Set数据结构来去除数组的重复元素,然后使用Array.from()方法将Set转换为数组,并使用sort()方法对数组进行排序。 方法二:使用ES6的扩展运算符和Set ```javascript let arr1 = \[1, 25, 2, 26, 1234, 6, 213\]; let arr2 = \[2, 6, 2134, 6, 31, 623\]; let mergedArr = \[...arr1, ...arr2\]; let uniqueArr = Array.from(new Set(mergedArr)).sort((a, b) => a - b); console.log(uniqueArr); ``` 这个方法首先将两个数组合并为一个数组,然后使用Set数据结构去除数组的重复元素,最后使用sort()方法对数组进行排序。 方法三:使用reduce()方法和includes()方法 ```javascript let arr = \[1, 2, 3, 3, 1, 4\]; let uniqueArr = arr.reduce((result, current) => { if (!result.includes(current)) { result.push(current); } return result; }, \[\]).sort((a, b) => a - b); console.log(uniqueArr); ``` 这个方法使用reduce()方法遍历数组,如果结果数组不包含当前元素,则将其添加到结果数组,最后使用sort()方法对数组进行排序。 以上三种方法都可以实现数组去重排序,具体使用哪种方法取决于个人的喜好和需求。 #### 引用[.reference_title] - *1* [js数组去重排序](https://blog.csdn.net/csdnyp/article/details/115542501)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [js数组去重排序](https://blog.csdn.net/weixin_39407291/article/details/102955148)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [JS实现数组去重四种方法,去重排序](https://blog.csdn.net/xr510002594/article/details/90792076)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值