javascript - js判斷一個數(shù)組是否重復(fù)
問題描述
js怎么判斷一個數(shù)組對象里面有重復(fù)的值,并且刪除重復(fù)的值只保留一個比如 var arr = [{name:’a’},{name:’b’},{name:’c’},{name:’d’},{name:’a’}] 怎么對比
問題解答
回答1:可以雙for循環(huán)去找,用第一個和后面挨個對比,重復(fù)則刪除,在從第二個找,在向后對比,重復(fù)則刪除
const del = (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) {arr.splice(j,1);i--; }} } return arr;}回答2:
突發(fā)奇想寫的。。。不知道是否滿足所有要求。。。哈哈
方法一:
const del = (arr)=>{ let map = []; for(let i = 0; i < arr.length; i++) { let key = JSON.stringify(arr[i]); if(map.includes(key)) {arr.splice(i, 1);i--; } else {map.push(key); } } return arr;}
方法二:
const del = arr=>Array.from(new Set(arr.map(a=>JSON.stringify(a)))).map(a=>JSON.parse(a))回答3:
temp.indexOf ( arr[i].name ) = -1;
res.push(arr[i]);
數(shù)組去重方法比較多,你還可以有更好的方法
回答4:原材料arr 是一維數(shù)組 而且元素是對象。 要處理的內(nèi)容是該對象下的 name 屬性。
var arr = [{name:’a’},{name:’b’},{name:’c’},{name:’d’},{name:’a’}]處理思路
遍歷他,然后在每次遍歷的 item 基礎(chǔ)上再遍歷一次 arr 挨個對比 如果發(fā)現(xiàn)重復(fù)就留個記錄
var logger = (a, b) => { console.group(’誰重復(fù)了?’); console.log(’元素:’, a); console.log(’下標(biāo):’, b); console.groupEnd(); }// 遍歷 arr.filter((item, idx, its) => { // 一旦發(fā)現(xiàn)有重復(fù)的元素就返回 true (通過 its.some 注意他的兩個參數(shù) e 和 idx2) // 無重復(fù)的過濾掉 return its.some((e, idx2) => {return (e.name === item.name && idx2 !== idx); });}).forEach(logger); ScreenShot
// 數(shù)組去重// 有key表示是復(fù)雜數(shù)組去重,根據(jù)數(shù)組中對象的屬性key來去重function arrUniq(arr, key) {
if (!Array.isArray(arr) || arr.length < 2) { return arr;}// 簡單數(shù)組去重if (!key) { return Array.from(new Set(arr));}// 復(fù)雜數(shù)組去重var obj = {}, res = [];arr.forEach((item) => { if (!obj[item[key]]) {res.push(item);obj[item[key]] = true; }});return res;
}
相關(guān)文章:
1. javascript - 如何讓移動端網(wǎng)頁的輸入框固定在底部?2. MySQL中無法修改字段名的疑問3. angular.js - angular內(nèi)容過長展開收起效果4. Matlab和Python編程相似嗎,有兩種都學(xué)過的人可以說說嗎5. javascript - 微信小程序封裝定位問題(封裝異步并可能多次請求)6. 大家好,請問在python腳本中怎么用virtualenv激活指定的環(huán)境?7. 請教各位大佬,瀏覽器點(diǎn) 提交實(shí)例為什么沒有反應(yīng)8. python的前景到底有大?如果不考慮數(shù)據(jù)挖掘,機(jī)器學(xué)習(xí)這塊?9. mysql - 怎么讓 SELECT 1+null 等于 110. javascript - 微信小程序限制加載個數(shù)
