js で配列オブジェクトを重複排除するいくつかの方法


まず配列の形式を定義します

let arrObj = [
    {
    
     name: "张三", key: '1' },
    {
    
     name: "李四", key: '2' },
    {
    
     name: "王五", key: '3' },
    {
    
     name: "张三", key: '1' },
    {
    
     name: "李四", key: '2' }
];

要件: 同じキー値を持つオブジェクトを削除します。望ましい結果は次のとおりです。
ここに画像の説明を挿入

1. 方法 1: 二重層の for ループ

2 対 2 の比較。後のオブジェクトのキー値が前のオブジェクトのキー値と等しい場合、後のオブジェクトを削除します。

let arrObj = [
  {
    
     name: "张三", key: '1' },
  {
    
     name: "李四", key: '2' },
  {
    
     name: "王五", key: '3' },
  {
    
     name: "张三", key: '1' },
  {
    
     name: "李四", key: '2' }
]
function uniqueArr (arr) {
    
    
  for (let i = 0; i < arr.length; i++) {
    
    
    for (let j = i + 1; j < arr.length; j++) {
    
    
      if (arr[i].key == arr[j].key) {
    
    
        arr.splice(j, 1)
        j--
      }
    }

  }
  return arr
}
console.log(uniqueArr(arrObj));

2. オブジェクトアクセスプロパティのメソッド

属性値が存在するかどうかは、オブジェクトアクセス属性のメソッドを使用して判断します。

let arrObj = [
  {
    
     name: "张三", key: '1' },
  {
    
     name: "李四", key: '2' },
  {
    
     name: "王五", key: '3' },
  {
    
     name: "张三", key: '1' },
  {
    
     name: "李四", key: '2' }
]
function uniqueArr (arr) {
    
    
  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
    }
  }

  return result
}
console.log(uniqueArr(arrObj));

3. Map() メソッド

has メソッドは、指定された要素が Map オブジェクトに存在するかどうかを判断し、存在する場合は true を返し、存在しない場合は false を返します。

set メソッドは、Map オブジェクトに新しい要素を追加できます。map.set(key, value)

value メソッドは、Map オブジェクトの値のトラバーサー オブジェクトを返すことができます

let arrObj = [
  {
    
     name: "张三", key: '1' },
  {
    
     name: "李四", key: '2' },
  {
    
     name: "王五", key: '3' },
  {
    
     name: "张三", key: '1' },
  {
    
     name: "李四", key: '2' }
]
// 方法一:
let map = new Map()
for (let item of arrObj) {
    
    
  if (!map.has(item.key)) {
    
    
    map.set(item.key, item)
  };
};
arr = [...map.values()]
console.log(arr)



// 方法二: (代码较为简洁)
const map = new Map()
const newArr = arrObj.filter(v => !map.has(v.key) && map.set(v.key, 1))
console.log(newArr);

4.reduceメソッド

let arrObj = [
  {
    
     name: "张三", key: '1' },
  {
    
     name: "李四", key: '2' },
  {
    
     name: "王五", key: '3' },
  {
    
     name: "张三", key: '1' },
  {
    
     name: "李四", key: '2' }
]
var obj = {
    
    }
arrObj = arrObj.reduce(function (item, next) {
    
    
  obj[next.key] ? '' : obj[next.key] = true && item.push(next)
  return item
}, [])
console.log(arrObj);

おすすめ

転載: blog.csdn.net/DZQ1223/article/details/131326454