js 判斷數組對象中某一屬性是否包含重複的值

1、使用set,map實現

let arr = [{
        "name" : "張三",
        "id" : 1
},{
        "name" : "李四",
        "id" : 3
},{
        "name" : "張三",
        "id" : 2
}];


let names = arr.map(item => item["name"]);
let nameSet = new Set(names);

if (nameSet.size == names.length) {
    console.log("沒有重複值");
 } else {
    console.log("有重複值");
}

2、使用標識判斷是否存在

/**
 * @param arr 如:var arr = [{name: "123", age : 123}, {name:"1234432", age : 1234324}]
 * @param key 如:"name"
 *
 * @retutns boolean: true:不存在; false:存在重複
 **/
function isRepeat(arr, key) {
   var obj = {};
   for (let i = 0; i < arr.length; i ++) {
      if (obj[arr[i][key]]) {
          return false;    // 存在
      } else {
        obj[arr[i][key]] = arr[i];
      }
   }
    return true;
}

3、雙層循環

/**
 * @param arr 如:var arr = [{name: "123", age : 123}, {name:"1234432", age : 1234324}]
 * @param key 如:"name"
 *
 * @retutns boolean: true:不存在; false:存在重複
 **/
function isRepeat(arr, key) {
   for (let i = 0; i < arr.length; i ++) {
      for (let j = i + 1; j < arr.length; j ++) {
          if (arr[i][key] == arr[j][key]) {
              return false;
          }
      }
   }
    return true;
}
var arr = [2, 3, 1, 5, 7,6, 4,9, 8];

for (let i = arr.lengtgh; i >= 0; i --) {
    for (let j = 0; j < i; j ++) {
        if (arr[j] > arr[j + 1]) {
            var temp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章