美文网首页工作生活
微信小程序-数组去重保留下标最大的

微信小程序-数组去重保留下标最大的

作者: 肉肉要次肉 | 来源:发表于2019-07-04 10:11 被阅读0次

    思路:

    1.先将数组去重,取出去重元素,放在新建的空数组中 ,也就是这里: if (tempArr.indexOf(arr[i]) == -1)

    2. else if (tempArr.indexOf(arr[i])>=0),继续循环重复元素,根据筛选出来的去重数组对比,如果有重复的就将先前的元素删掉,添加下一次出来的重复元素,以及对应下标。

    3.以此类推找到最后一个重复的元素,即保留下标最大的那个

    var arr = [15,12,11, 28, 11, 11, 28, 28, 28, 29, 29, 29, 11];

        var tempArr = [];

        var indexArr= [];

        for (var i = 0; i < arr.length; i++) {

          if (tempArr.indexOf(arr[i]) == -1) {

            tempArr.push(arr[i]);

            indexArr.push(i)

          } else if (tempArr.indexOf(arr[i])>=0){

            for(var j = 0;j<tempArr.length;j++){

              if (tempArr[j] == arr[i]) {

                tempArr.splice(j, 1, tempArr[j]);

                indexArr.splice(j, 1, i);

              }

            }

          }

        }

        console.log('去重',tempArr,indexArr)

    结果:

    tempArr:[15, 12, 11, 28, 29]

    indexArr:[0, 1, 12, 8, 11]

    方法二:

    var arr = [15,12,11, 28, 11, 11, 28, 28, 28, 29, 29, 29, 11];

        var data = [];

        for(var i = 0;i<arr.length;i++){

          var newTag = false;

          if(data.length > 0){

            for(var z = 0;z < data.length;z++){

              if(arr[i] == data[z]){

                newTag = true;

              }

              if(z == data.length - 1 && !newTag){

                data.push(arr[i]);

              }

            }

          }else{

            data.push(arr[i])

          }

        }

        console.log('去重', data)

        var tapArr = [];

        for(var i = 0;i<data.length;i++){

          var tag = 0;

          for(var j = 0;j<arr.length;j++){

            if(data[i] == arr[j]){

              tag = j;

            }

            if(j == arr.length - 1){

              tapArr.push(tag)

            }

          }

        }

        console.log('去重:::',tapArr)

    相关文章

      网友评论

        本文标题:微信小程序-数组去重保留下标最大的

        本文链接:https://www.haomeiwen.com/subject/edflhctx.html