js 陣列去重小技巧

2021-09-07 20:39:53 字數 1489 閱讀 7305

今天遇到乙個問題,需要對資料進行去重,想看一下有沒有什麼比較方便的方法,果然有些收穫。

問題描述:

我有乙個這樣的資料:

[,,

]

要實現根據 projectid 去重,應該得到下面的結果:

[

,]

先從乙個簡單的問題入手,將乙個陣列去重[1, 2, 3, 3, 4]

通常,我們一般都是這樣去做的,將要用於去重的資料放在乙個 集合 中,將去重的資料放到乙個集合中(最終我們要的資料)

示例**:

//

var arr = [1, 2, 3, 3, 4];

var result = new array();

var filterarr = new array();

for (var i = 0; i < info.length; i++)

}// 或者使用 indexof 判斷

//if (filterarr[i].indexof(arr[i]) > -1)

filterarr.push(arr[i]);

result.push(arr[i]);

}// filter

arr = arr.filter(function (value, index, array) );

// es6

arr = arr.filter( (value, index, array) => array.indexof (value) == index);

//var info = [

,];function filter()

}filterarr.push(info[i].projectid);

result.push(info[i]);

}return result;

}

es6 裡提供了 set 的新語法,set裡不會有重複的元素,簡單陣列去重用它來實現最簡單不過了,舉個栗子:

var arr = [1, 2, 3, 3, 4];

console.log(arr); // [1, 2, 3, 3, 4]

arr = array.from(new set(arr));

console.log(arr);// [1, 2, 3, 4]

//info = info.filter((s => a => !s.has(a.projectid) && s.add(a.projectid))(new set));

是不是 es6 更方便、更簡潔,還沒用es6的童鞋強烈建議使用,

上的一坨**用 es6 只需要一行,只需要一行,只需要一行

info = info.filter((s => a => !s.has(a.projectid) && s.add(a.projectid))(new set));
希望你能有所收穫

JS陣列去重,物件去重

例項1根據indexof去重,indexof的好處就是返回的是首次出現的位置,這樣後面即使出現的值一樣,也只能返回第一次出現的索引,當然這個只適用於簡單的陣列 物件陣列去重 const objarr const obj const newobjarr for let i 0 i objarr.len...

js更加簡潔的小技巧(陣列去重,物件解構)

1 清空或截斷陣列 在不重新給陣列賦值的情況下,清空或截斷陣列的最簡單方法是更改 其 length 屬性值 const arr 1,2,3,4,5 截斷 arr.length 3 console.log arr 1,2,3 清除 arr.length 0 console.log arr consol...

js 陣列去重

function unique arr if isrepeated return result 建立乙個新的陣列,迴圈原有的陣列,每取乙個數就迴圈判斷新建的陣列中是否有和這個相等的值,沒有則插入。方法簡單,但是有雙重迴圈,陣列大了之後效率低。所以能一次迴圈解決最好。var str new array...