數組里面對象去重的四種方法


去重數據:

var arr = [{
      key: '01',
      value: '西施'
    }, {
      key: '02',
      value: '王昭君'
    }, {
      key: '03',
      value: '楊玉環'
    }, {
      key: '04',
      value: '貂蟬'
    }, {
      key: '01',
      value: '西施'
    }, {
      key: '01',
      value: '西施'
    }];

方法一:

利用對象訪問屬性的方法,判斷對象中是否存在key
var result = [];
    var obj = {};
    for (var i = 0; i < arr.length; i++) {
      if (!obj[arr[i].key]) {
        result.push(arr[i]);
        obj[arr[i].key] = true;
      }
    }
    console.log(result); // [{key: "01", value: "西施"},{key: "02", value: "王昭君"},{key: "03", value: "楊玉環"},{key: "04", value: "貂蟬"}]

方法二:

利用兩層for循環和布爾值的方法進行去重
var result = [];
    for (var i = 0; i < arr.length; i++) {
      var flag = true;
      for (var j = 0; j < result.length; j++) {
        if (arr[i].key === result[j].key) {
          flag = false;
        }
      }
      if (flag) {
        result.push(arr[i]);
      }
    }
    console.log(result); // [{key: "01", value: "西施"},{key: "02", value: "王昭君"},{key: "03", value: "楊玉環"},{key: "04", value: "貂蟬"}]

方法三:

利用兩層for循環和splice的方法進行去重,此方法會更改數組的原始數據
for (var i = 0; i < arr.length; i++) {
      for (var j = i + 1; j < arr.length; j++) {
        if (arr[i].key === arr[j].key) {
          arr.splice(j, 1);
          j = j - 1;
        }
      }
    }
    console.log(arr); // [{key: "01", value: "西施"},{key: "02", value: "王昭君"},{key: "03", value: "楊玉環"},{key: "04", value: "貂蟬"}]

方法四:

利用reduce方法遍歷數組,reduce第一個參數是遍歷需要執行的函數,第二個參數是item的初始值(ie9以下不支持此方法)
var obj = {};
    arr = arr.reduce(function (item, next) {
      obj[next.key] ? '' : obj[next.key] = true && item.push(next);
      return item;
    }, []);
    console.log(arr); // [{key: "01", value: "西施"},{key: "02", value: "王昭君"},{key: "03", value: "楊玉環"},{key: "04", value: "貂蟬"}]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM