- [
- {
- name: '玉骨遥寒薇结海报',
- created_at: '2021-06-04 04:54:06.164',
- },
- {
- name: '玉骨遥寒薇结海报',
- created_at: '2021-06-04 04:52:49.753',
- },
- {
- name: '玉骨遥寒薇结海报',
- created_at: '2021-06-04 05:02:02.398',
- },
- {
- name: '公交车抛锚警民携手推车为考生开路',
- created_at: '2021-06-04 04:52:40.588',
- },
- {
- name: '公交车抛锚警民携手推车为考生开路',
- created_at: '2021-06-04 05:07:21.587',
- },
- ]
1. 去除 name 相同的对象
2. 且保留的是创建时间最早的对象
解决方法:
image.PNG
数组去重有效的方法:
1. 简单数组 利用 ES6 Set 去重 (ES6 中最常用)
- function unique (arr) {
- return Array.from(new Set(arr)) //from() 方法用于通过拥有 length 属性的对象或可迭代的对象来返回一个数组.
- // 或者 [...new Set(arr)]
- }
2. 利用 for 嵌套 for, 然后 splice 去重 (ES5 中最常用)
- function unique(arr){
- for(let i=0; i<arr.length; i++){
- for(let j=i+1; j<arr.length; j++){
- if(arr[i].id===arr[j].id){ // 第一个数 id 等于第二个数 id,splice 方法删除第二个
- arr.splice(j,1);
- j--;
- }
- }
- }
- return arr;
- }
3. 利用 reduce+findIndex
- function unique(arr) {
- return arr.reduce((prev,cur)=>
- prev.findIndex(v1=>v1.name==cur.name) ==-1 ? [...prev, cur] : prev
- ,[])
- }
JS 如何去除一个数组中与另一个数组中的值相同的元素
法 1: 双层 for 循环
- function array_diff(a, b) {
- for (var i = 0; i <b.length; i++) {
- for (var j = 0; j < a.length; j++) {
- if (a[j].name == b[i].name) {
- a.splice(j, 1)
- j = j - 1
- }
- }
- }
- return a
- }
法 2: 数组方法
- function array_diff(a, b) {
- return a.filter(ee=>b.findIndex(v1=>v1.name==ee.name) === -1)
- }
来源: http://www.jianshu.com/p/a3c8f6bb5392