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

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

作者: 肉肉要次肉 | 来源:发表于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