获取数组中重复的元素

第一种,判断包含基本类型的数组中的重复元素

/**
 * (这里只是判断基本类型的元素)
 * @param  Array
 * @return Array
 */
export const getRepeatElement = (array) => {
  let result = []
  let hash = {}
  array.forEach((item) => {
    if (item) {
      if (!hash[item]) {
        hash[item] = true
      } else {
        result.push(item)
      }
    }
  })

  result = result.filter((item, index, arr) => arr.indexOf(item) === index)

  return result
}

第二种,判断包含对象的数组中的重复元素

/* 去掉对象数组中属性和属性值一样的对象,返回过滤后的数组 */
const getNoRepeatObject = (array) => {
  if (array.length < 2) {
    return array
  }
  let differentObject = []  //放不重复的对象
  let sameObject = [] //放重复对象
  array.forEach(obj => {
    let sameArray = differentObject.filter(tempObj => {
      let isSame = true
      if(Object.keys(tempObj).length === Object.keys(obj).length) {
        for (const key in tempObj) {
          if (!obj.hasOwnProperty(key) || tempObj[key] !== obj[key]) {
            isSame = false
          }
        }
      } else {
        isSame = false
      }
      if (isSame) {
        return tempObj
      }
    })
    if (!sameArray.length) {
      differentObject.push(obj)
    } else {
      sameObject.concat(sameArray)  //将重复的对象放到sameObject数组中,如果需要,也可以返回
    }
  })
  if (differentObject.length === 1) {
    differentObject = []
  }

  return differentObject
}

原文地址:https://www.cnblogs.com/yyh1/p/9822257.html

时间: 2024-10-10 00:31:04

获取数组中重复的元素的相关文章

用正则去掉数组中重复的元素

<!doctype html><html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script> //去掉数组中重复的元素 //此题最主要就是对数组进行排序拼接,在进行replace的替换,在进行分割,将其return到外部 //随机生成随机数压入空数组arr中 for(var i=0,arr

442. 找出数组中重复的元素 Find All Duplicates in an ArrayGiven an array of integers

Given an array of integers, 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once. Find all the elements that appear twice in this array. Could you do it without extra space and in O(n) runtime? Example: Input: [4,3,2,7,

消除一个数组中重复的元素

使用JavaScript消除一个数组中重复的元素 var arr1 = [1,1,2,3,4,5,6,6,6,7],arr2 = []; for(var i=0;i<arr1.length;i++){ if(arr2.indexof(arr1[i] < 0){ arr2.push(arr1[i]); } } document.write(arr2); //1,2,3,4,5,6,7

获取数组中最后一个元素

Array.prototype.slice(begin,end)用来获取begin和end之间的数组元素.如果你不设置end参数,将会将数组的默认长度值当作end值.但有些同学可能不知道这个函数还可以接受负值作为参数.如果你设置一个负值作为begin的值,那么你可以获取数组的最后一个元素.如: var array = [1,2,3,4,5,6]; console.log(array.slice(-1)); // [6] console.log(array.slice(-2)); // [5,6]

去除数组中重复的元素

1 var arr = [1,2,3,4,5,6,1,2,3,11,1,2,3]; 2 3 var arr2 = neaten_arr(arr); 4 5 function neaten_arr(arr){ 6 var a = new Array(); 7 var b = new Array(); 8 9 for(i in arr){ 10 a[arr[i]] = 1; //将arr中的值改为数组a的下边,这个样子整会把重复的下标值覆盖掉 11 } 12 for(i in a){ 13 b.pu

PHP获取数组中重复值的键值

$array = array ( 0=>'a', 1=>'b', 2=>'a', 5=>'b', 6=>'c', 40=>'d' ); $keyarr =[];$resultkey = [];foreach ($array as $k => $v) { if (in_array($v, $keyarr)) { //在数组中搜索键值$v,并返回它的键名 $resultkey[] = array_search($v,$keyarr); $resultkey[] = $

JavaScript 找出数组中重复的元素

实现检测数组重复元素的功能,需要注意一点的是,多个(2个或2个以上)重复元素,我们只需要挑出一个来就可以了. <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>文字循环显示</title> <script type="text/javascript"> var sear=function(arr) { var

找出现有Vector或ArrayList或数组中重复的元素&amp;给现有Vector或ArrayList或数组去重

//直接上代码: public static void main(String[] args) { List<Integer> list = new Vector<Integer>(20); for (int i = 0; i < 10; i++) { list.add(i % 3); list.add(i % 6); list.add(i % 2); list.add(i % 4); } System.out.println("原始元素:" + list

PHP删除数组中重复的元素

array_unique($arr): //删除重复元素 $arr = [1,2,3,0,1]; echo '<pre>'; var_dump($arr); $arr = array_unique($arr);//输出[1,2,3,0] var_dump($arr); 原文地址:https://www.cnblogs.com/camg/p/11986589.html