gpt4 book ai didi

javascript - 如何在JavaScript中从二维数组中过滤相同的子数组

转载 作者:行者123 更新时间:2023-11-28 13:20:45 25 4
gpt4 key购买 nike

假设有多个整数元素无序的子数组,例如:

[[1, 2], [2, 1], [3, 2, 2], [2], [2, 1, 3], [2, 2, 3]]

我想对每个子数组中的元素进行排序并删除重复项。因此,处理这些数据后,结果应该如下:

[[1, 2], [2, 2, 3], [2], [1, 2, 3]]

如何在 JavaScript 中高效地完成此操作?

最佳答案

如果你的数据实际上是整数数组,你可以这样做

// ES6
let data = [[1, 2], [2, 1], [3, 2, 2], [2], [2, 1, 3], [2, 2, 3]];

// non-mutating sort function
function sort(x) { let y = x.slice(0); y.sort(); return y; }

let final = data.map(x => JSON.stringify(sort(x))).reduce((res, x) =>
res.indexOf(x) === -1 ? res.concat(x) : res
, []).map(JSON.parse);

console.log(data);
console.log(final);

// [[1,2],[2,1],[3,2,2],[2],[2,1,3],[2,2,3]]
// [[1,2],[2,2,3],[2],[1,2,3]]

请注意,我的解决方案不会不必要地改变您的输入数据(就像此处提供的其他解决方案一样)

如果您需要 ES5 代码,就在这里

// ES5
var data = [[1, 2], [2, 1], [3, 2, 2], [2], [2, 1, 3], [2, 2, 3]];

// non-mutating sort function
function sort(x) {
var y = x.slice(0);y.sort();return y;
}

var final = data.map(function (x) {
return JSON.stringify(sort(x));
}).reduce(function (res, x) {
return res.indexOf(x) === -1 ? res.concat(x) : res;
}, []).map(JSON.parse);

console.log(data);
console.log(final);

// [[1,2],[2,1],[3,2,2],[2],[2,1,3],[2,2,3]]
// [[1,2],[2,2,3],[2],[1,2,3]]

关于javascript - 如何在JavaScript中从二维数组中过滤相同的子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33294899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com