js数组获取相同元素个数

本文介绍了一种使用JavaScript进行归档统计的方法,通过遍历日期数组并统计相同月份出现的次数来实现。这种方法适用于网站或应用中按月份进行内容归档的需求。
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>

<body>
  <script>
  var arr = [];
  var result = ['2017年6月', '2017年6月', '2017年6月', '2017年5月', '2017年5月', '2017年7月', '2017年7月']
  result.sort()
  for (var i = 0; i < result.length;) {
    var count = 0;
    for (var j = i; j < result.length; j++) {
      if (result[i] === result[j]) {
        count++;
      }
    }
    arr.push({
      date: result[i],
      count: count
    })
    i+=count;
  }

  for (var k = 0; k < arr.length; k++) {
    console.log(arr[k])
  }
  </script>
</body>

</html>

结果:
1027889-20170621140944601-1493136710.png

可以用来做归档统计

在 JavaScript 中,有多种方法可以获取个数组的相同元素,以下为你介绍几种常见的方法: ### 方法一:使用双重循环 定义一个名为 `hasDuplicate` 的函数,它接受两个数组作为参数。函数通过双重循环遍历这两个数组,并在找到相等的元素时返回 `true`。如果完成了所有的循环都没有找到重复元素,则返回 `false`。以下是示例代码: ```javascript function hasDuplicate(arr1, arr2) { let result = []; for (let i = 0; i < arr1.length; i++) { for (let j = 0; j < arr2.length; j++) { if (arr1[i] === arr2[j]) { result.push(arr1[i]); break; } } } return result; } // 示例用法 const array1 = [1, 2, 3, 4]; const array2 = [3, 4, 5, 6]; const duplicates = hasDuplicate(array1, array2); console.log(duplicates); // 输出: [3, 4] ``` 该方法的时间复杂度较高,为 $O(m * n)$,其中 $m$ 和 $n$ 分别为两个数组的长度。 ### 方法二:使用 `filter` 和 `includes` 方法 ```javascript function getDuplicates(arr1, arr2) { return arr1.filter(item => arr2.includes(item)); } // 示例用法 const array3 = [1, 2, 3, 4]; const array4 = [3, 4, 5, 6]; const commonElements = getDuplicates(array3, array4); console.log(commonElements); // 输出: [3, 4] ``` 此方法的时间复杂度也是 $O(m * n)$,但代码更加简洁。 ### 方法三:使用 `Set` 数据结构 `Set` 是一种集合,不允许重复值存在。可以将其中一个数组转换为 `Set`,然后遍历另一个数组,检查元素是否存在于 `Set` 中。 ```javascript function getDuplicatesWithSet(arr1, arr2) { const set = new Set(arr2); return arr1.filter(item => set.has(item)); } // 示例用法 const array5 = [1, 2, 3, 4]; const array6 = [3, 4, 5, 6]; const common = getDuplicatesWithSet(array5, array6); console.log(common); // 输出: [3, 4] ``` 这种方法的时间复杂度为 $O(m + n)$,性能相对较好。 ### 方法四:使用 `reduce` 方法 ```javascript function getDuplicatesWithReduce(data1, data2) { return data1.reduce((result, obj1) => { if (data2.some(obj2 => obj2 === obj1)) { result.push(obj1); } return result; }, []); } // 示例用法 const array7 = [1, 2, 3, 4]; const array8 = [3, 4, 5, 6]; const sameElements = getDuplicatesWithReduce(array7, array8); console.log(sameElements); // 输出: [3, 4] ``` 此方法也能实现获取相同元素的功能,时间复杂度受 `some` 方法影响,为 $O(m * n)$ [^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值