縹緲止盈
2019-03-06 15:13:54
符合題意的解決辦法function unique(arr) { const res = new Map(); return arr.filter((a) => !res.has(a) && res.set(a, 1))}因?yàn)閙ap key唯一,所以你想要根據(jù)哪個(gè)屬性去重,res.has(a)里a就可以改成什么,比如a.name參考:https://segmentfault.com/a/11...箭頭函數(shù)return arr.filter((a) => !res.has(a) && res.set(a, 1))//上面的代碼可以改成這樣return arr.filter(function(a){ return !res.has(a) && res.set(a, 1);});1、箭頭函數(shù)寫代碼擁有更加簡(jiǎn)潔的語(yǔ)法;2、不會(huì)綁定this。分割線,下面是我的個(gè)人問(wèn)題,跟問(wèn)題有些出入,采納了我符合我個(gè)人問(wèn)題的答案,抱歉我是這么寫的,參考了 https://segmentfault.com/q/10...https://blog.csdn.net/zhihua_...問(wèn)題和文章,但覺(jué)得不是很優(yōu)雅,好像沒(méi)有用什么es6的新東西,請(qǐng)問(wèn)es6有更好地實(shí)現(xiàn)方式嗎?謝謝各位getGameVersionList() { const versionList = this.page.resultList const versionSet = [0] const hash = {} for (var i = 0, gameVersion; (gameVersion = versionList[i]) != null; i++) { if (!hash[gameVersion.gameVersionNo]) { versionSet.push(gameVersion.gameVersionNo) hash[gameVersion.gameVersionNo] = true } } this.gameVersionNoSet = versionSet },
3 回答

郎朗坤
TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
getGameVersionList() {
return [0, ...new Set(this.page.resultList.map(item => item.gameVersionNo))]
}

哈士奇WWW
TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊
用filter吧,符合條件的可以直接return,在配合存hash。
hash直接把值作為key是有坑的,比如[1, '1', [1]],這三個(gè)當(dāng)作key就一模一樣都是'1'。
用map也不行:
let map = new Map();
map.set([1], 'test');
map.get([1]) //undefined
前后的[1]不是同一個(gè)一樣取不到,還是object模擬hash配合類型判斷吧。
剛想了下,兩個(gè)[1]本來(lái)就不重復(fù),看需求吧,還是可以用map做hash的。
添加回答
舉報(bào)
0/150
提交
取消