如何在JavaScript中删除重复的排序数组?我尝试在新集合上使用扩展语法制作一个新数组,但这看起来极其复杂,并迫使我的结果集看起来像这样:[ [ '-', '1', ',', '0', ',', '1' ], [ '-', '1', ',', '-', '1', ',', '2' ] ][ [ '-', '1', ',', '0', ',', '1' ], [ '-', '1', ',', '-', '1', ',', '2' ] ][ [ '0', ',', '0', ',', '0' ] ][ [ '0', ',', '0', ',', '0' ] ][ [ '-', '4', ',', '-', '2', ',', '6' ], [ '-', '4', ',', '0', ',', '4' ], [ '-', '4', ',', '1', ',', '3' ], [ '-', '4', ',', '2', ',', '2' ], [ '-', '2', ',', '-', '2', ',', '4' ], [ '-', '2', ',', '0', ',', '2' ] ][ [ '-', '4', ',', '-', '2', ',', '6' ], [ '-', '4', ',', '0', ',', '4' ], [ '-', '4', ',', '1', ',', '3' ], [ '-', '4', ',', '2', ',', '2' ], [ '-', '2', ',', '-', '2', ',', '4' ], [ '-', '2', ',', '0', ',', '2' ] ]或者[ [ '-1,0,1' ], [ '-1,-1,2' ] ][ [ '-1,0,1' ], [ '-1,-1,2' ] ][ [ '0,0,0' ] ][ [ '0,0,0' ] ][ [ '-4,-2,6' ], [ '-4,0,4' ], [ '-4,1,3' ], [ '-4,2,2' ], [ '-2,-2,4' ], [ '-2,0,2' ] ][ [ '-4,-2,6' ], [ '-4,0,4' ], [ '-4,1,3' ], [ '-4,2,2' ], [ '-2,-2,4' ], [ '-2,0,2' ] ]请注意,这些是在我将其设置为字符串之后。该集合将不会删除重复的排序数组,因为它们是不同的对象。这是代码。var threeSum = function (arr) { let map = new Map(); for (let i = 0; i < arr.length; i++) { let num = arr[i]; if (map.has(num)) { map.get(num).push(i); } else { map.set(num, [i]); } } const results = []; for (let i = 0; i < arr.length; i++) { for (let j = i + 1; j < arr.length; j++) { let diff = (arr[i] + arr[j]); diff = (diff == 0) ? diff: diff * -1; if (map.has(diff)) { let mArr = map.get(diff); for (let k = 0; k < mArr.length; k++) { if (mArr[k] != i && mArr[k] != j ) { results.push([arr[i], arr[j], diff]); } } } } }
2 回答
慕容708150
TA贡献1831条经验 获得超4个赞
一组是完美的完成这个任务。集保持其所有元素都是唯一的条件。这是完成任务的方式:
创建一个包含结果元素的新集合:
let set = new Set(results.map(result => JSON.stringify(result))
将集合转换为数组。这可以使用
Array.from(set).map(elem => JSON.parse(elem))
添加回答
举报
0/150
提交
取消