WEB前端

js数组去重复和排序的代码

位置:首页 > WEB前端 > js教程,2019-03-20 13:51
代码如下所示:<script>let obj = { 0: [44, 67], 1: [90, 43, 56],
代码如下所示:
<script>let obj = {        0: [44, 67],        1: [90, 43, 56],        2: [56, 67, 33],        3: [80, 96, 45]
      };      function getArr(obj) {        if (typeof obj != "object") {
          console.warn("参数不正确");          return;
        }


        const arr = [];        //  遍历对象的每一个对象
        for (var item in obj) {          if (obj.hasOwnProperty(item) === true) {            //  map取对象每一个total对应的值取赋值
            obj[item].map((i, index) => {              if (!arr[index]) {
                arr[index] = [];
              }
              arr[index].push(obj[item][index]);
            });
          }
        }        return arr;
      }
      console.log(getArr(obj));</script>

如果你有不同的方法,或者更好的方法请来信(email:785784961@qq.com)


这里需要注意的是:


1.封装函数的入参类型判断,并且给出友好的提示,比如警告,或者入参示例


2.使用for in 遍历对象会遍历原型链,需要我们判断一下


3.对于遍历中新生成的数组要判断是否有没有


4.开发代码中调试时,尽量使用console.log()来打印值,减少alert()使用


5.封装插件要写好readme,或者在js中写好注释


6.可以的化,建议使用包管理,实现安装操作,即npm发布


进入数组去重的操作,看一下题目


复制代码


<script>// 2019-3-5 今日面试题,数组去重
      let m = [1, 2, 2],
        n = [2, 3, 3];      // 返回 m 和n 的不重复的元素,并且按照从小到大排序
      let arr = [1,2,3]</script>
复制代码


这道题的考查点:


1.数组的合并


2.数组排序


3.数组去重


首先我们进入es6快速实现的过程,定义一个箭头函数,使用new Set 合并数组,再用sort方法去排序,最后Array.from生成新的数组,就可以搞定了


复制代码


<script>// 2019-3-5 今日面试题,数组去重
      let m = [1, 2, 2],
        n = [2, 3, 3];      // 返回 m 和n 的不重复的元素,并且按照从小到大排序      
      const func = (m, n) =>
        Array.from(new Set(m.concat(n))).sort((a, b) => a - b);
      console.log(func(m, n));</script>
复制代码


第二种:常规的方法es5


复制代码


<script>      // 2019-3-5 今日面试题,数组去重
      let m = [1, 2, 2],
        n = [2, 3, 3];      // 返回 m 和n 的不重复的元素,并且按照从小到大排序


      //  第二种方法
      function getArr(m, n) {        for (var i = 0; i < n.length; i++) {          if (m.indexOf(n[i]) < 0) {
            m.push(n[i]);
          }
        }        var arr = [];        for (var l = 0; l < m.length; l++) {          if (arr.indexOf(m[l]) == -1) {
            arr.push(m[l]);
          }
        }
        arr = arr.sort(function(x, y) {          return x - y;
        });        return arr;
      }
      console.log(getArr(m, n));    </script>
复制代码


如果降序的话的第二种交互sort中y-x就好了


复制代码


<script>      // 2019-3-5 今日面试题,数组去重
      let m = [1, 2, 2],
        n = [2, 3, 3];      // 返回 m 和n 的不重复的元素,并且按照从小到大排序


      //  第二种方法
      function getArr(m, n) {        for (var i = 0; i < n.length; i++) {          if (m.indexOf(n[i]) < 0) {
            m.push(n[i]);
          }
        }        var arr = [];        for (var l = 0; l < m.length; l++) {          if (arr.indexOf(m[l]) == -1) {
            arr.push(m[l]);
          }
        }
        arr = arr.sort(function(x, y) {          return  y- x;
        });        return arr;
      }
      console.log(getArr(m, n));    </script>
复制代码


注意:


1.这里我们没有判断入参类型,需要调用函数时注意一下,需要是数组类型


2.日常开发中,前端和后端会约定数据类型,一般不会改变类型,所以我们可以省略类型判断,减少数据处理的时间


3.需要考虑的点,上面数组量数据过大如何处理,如何快速排序


2019-3-6面试题


复制代码


<script>// 2019-3-6 面试题,时间格式转化
    let data= {
        create_time:'2019-02-05T08:14:28.000Z'
    };    // 将上面的时间进行格式化,按照入参形式返回一下3种形式
    
    // 第一种
    let time1 = '2019-02-05'    // 第二种 
    let time2 = '2019-02-05 08:14:28'    // 第三种
    let time3 = '2019年02月05日 上午8点14分'    // 请在下面函数补充完整
    function getTime(time,type){


    }</script>
.imooc.com/article/282054
来源:慕课网

TAGS:js数组js数组去重js数组排序

上编:js 时间与时间戳的转换

下编:没有了

猜你喜欢

NewHot