Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中从二维数组中过滤相同的子数组_Javascript_Arrays - Fatal编程技术网

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

如何在JavaScript中从二维数组中过滤相同的子数组,javascript,arrays,Javascript,Arrays,假设有多个子数组具有无序的整数元素,例如: [[1,2],[2,1],[3,2,2],[2,1,3],[2,2,3]。 我想对每个子数组中的元素进行排序并删除重复项。因此,在处理这些数据后,结果应如下所示: [[1,2],[2,2,3],[2],[1,2,3]] 如何在JavaScript中高效地执行此操作?您可以尝试以下方法:首先对它们进行排序,然后删除重复项 VarX=[[1,2],[2,1],[3,2,2],[2],[2,1,3],[2,2,3]; 对于(x中的i){ x[i].sort

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

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

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

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


如何在JavaScript中高效地执行此操作?

您可以尝试以下方法:首先对它们进行排序,然后删除重复项

VarX=[[1,2],[2,1],[3,2,2],[2],[2,1,3],[2,2,3]; 对于(x中的i){ x[i].sort(); } b=uniqBy(x,JSON.stringify) document.getElementById(“数据”).innerHTML=JSON.stringify(b); 功能uniqBy(a,键){ var-seen={}; 返回a.filter(函数(项){ var k=关键(项目); 返回seen.hasOwnProperty(k)?false:(seen[k]=true); }) }
您可以尝试这样做:首先对它们进行排序,然后删除重复项

VarX=[[1,2],[2,1],[3,2,2],[2],[2,1,3],[2,2,3]; 对于(x中的i){ x[i].sort(); } b=uniqBy(x,JSON.stringify) document.getElementById(“数据”).innerHTML=JSON.stringify(b); 功能uniqBy(a,键){ var-seen={}; 返回a.filter(函数(项){ var k=关键(项目); 返回seen.hasOwnProperty(k)?false:(seen[k]=true); }) }
首先,我们需要对您的子阵列进行排序。这很容易,因为有一个内置的JavaScript函数
sort()

var-arr=[[1,2]、[2,1]、[3,2,2]、[2]、[2,1,3]、[2,2,3];
arr.forEach(函数(subar){
subar.sort();
});

document.body.innerHTML=JSON.stringify(arr)首先,我们需要对您的子阵列进行排序。这很容易,因为有一个内置的JavaScript函数
sort()

var-arr=[[1,2]、[2,1]、[3,2,2]、[2]、[2,1,3]、[2,2,3];
arr.forEach(函数(subar){
subar.sort();
});

document.body.innerHTML=JSON.stringify(arr)如果您的数据实际上是整数数组,您可以这样做

// 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]]

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

// 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]]

让我们在混合物中加入另一种溶液

var-arr=[[1,2]、[2,1]、[3,2,2]、[2]、[2,1,3]、[2,2,3];
var temp={};
var updated=arr.reduce(函数(prev,arr){
var adj=arr.slice(0.sort();
如果(!temp[adj.join(“,”){
上推;
temp[adj.join(“,”)=true;
}
返回上一个;
},[]);

log(JSON.stringify(更新))让我们在混合物中添加另一种溶液

var-arr=[[1,2]、[2,1]、[3,2,2]、[2]、[2,1,3]、[2,2,3];
var temp={};
var updated=arr.reduce(函数(prev,arr){
var adj=arr.slice(0.sort();
如果(!temp[adj.join(“,”){
上推;
temp[adj.join(“,”)=true;
}
返回上一个;
},[]);

log(JSON.stringify(更新))只需使用以下javascript:

var arr = [[1, 2], [2, 1], [3, 2, 2], [2], [2, 1, 3], [2, 2, 3]];

function sortArray(array) {
  var count = array.length;
  var sorted = array.sort();
  var equal = true;

  for (var i=0;i<count;i++) {
    if (array[i].length > 1)
      array[i].sort();
  }
  array.sort().sort();

  for (var i=0;i<count;i++) {
    if (array[i] && array[i+1]) {
      for (var j=0, len=array[i].length; j<len; j++) {
        if (array[i][j] !== array[i+1][j])
          equal = false;
      }
      if (equal)
        array.splice(i,1);
      equal = true;
   }

  }

  console.log(array);
 }

 sortArray(arr);
var-arr=[[1,2]、[2,1]、[3,2,2]、[2]、[2,1,3]、[2,2,3];
函数sortArray(数组){
var count=array.length;
var sorted=array.sort();
var等于真;
对于(变量i=0;i 1)
数组[i].sort();
}
array.sort().sort();

对于(var i=0;i只需使用以下javascript:

var arr = [[1, 2], [2, 1], [3, 2, 2], [2], [2, 1, 3], [2, 2, 3]];

function sortArray(array) {
  var count = array.length;
  var sorted = array.sort();
  var equal = true;

  for (var i=0;i<count;i++) {
    if (array[i].length > 1)
      array[i].sort();
  }
  array.sort().sort();

  for (var i=0;i<count;i++) {
    if (array[i] && array[i+1]) {
      for (var j=0, len=array[i].length; j<len; j++) {
        if (array[i][j] !== array[i+1][j])
          equal = false;
      }
      if (equal)
        array.splice(i,1);
      equal = true;
   }

  }

  console.log(array);
 }

 sortArray(arr);
var-arr=[[1,2]、[2,1]、[3,2,2]、[2]、[2,1,3]、[2,2,3];
函数sortArray(数组){
var count=array.length;
var sorted=array.sort();
var等于真;
对于(变量i=0;i 1)
数组[i].sort();
}
array.sort().sort();

对于(var i=0;iso)您想将数组减少为唯一数组?您现在如何进行排序/筛选?因此您想将数组减少为唯一数组?您现在如何进行排序/筛选?