【发布时间】:2019-08-29 01:40:02
【问题描述】:
如何在 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]);
}
}
}
}
}
results.forEach((value) => {
value.sort((a, b) => { return a - b });
});
let newResults = results.filter((val, idx, arr) => {
/// how do i do this
})
console.log(newResults);
return newResults;
}
console.log(threeSum([-1, 0, 1, 2, -1, -4]));
console.log(threeSum([0,0,0,0]));
console.log(threeSum([-4,-2,-2,-2,0,1,2,2,2,3,3,4,4,6,6]));
【问题讨论】:
-
只要对它们进行排序,您就可以使用 JSON.stringify 或 join() 对数组进行字符串化,并作为字符串键传递给 Set 或 Map
-
预期输出的格式是什么?
-
预期:[[-4,-2,6],[-4,0,4],[-4,1,3],[-4,2,2],[- 2,-2,4],[-2,0,2]]
-
那么输入的内容是什么?
-
输入:[-4,-2,-2,-2,0,1,2,2,2,3,3,4,4,6,6]
标签: javascript arrays duplicates