Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 排序数组(2D数组)需要帮助_Javascript_Arrays - Fatal编程技术网

Javascript 排序数组(2D数组)需要帮助

Javascript 排序数组(2D数组)需要帮助,javascript,arrays,Javascript,Arrays,基本上,我要做的是将数组输入的值排序,如uniteUnique([1,3,2],[5,2,1,4],[2,1])到排序的2D数组中,如[[1,1,1],[2,2],[4],[3],[5]数组不必按数字/值顺序排列。下面的代码是我尝试的代码: function uniteUnique(arr) { let times = 0; var unique = [[]]; for (var i = 0; i < Array.prototype.slice.call(argum

基本上,我要做的是将数组输入的值排序,如
uniteUnique([1,3,2],[5,2,1,4],[2,1])
到排序的2D数组中,如
[[1,1,1],[2,2],[4],[3],[5]
数组不必按数字/值顺序排列。下面的代码是我尝试的代码:

function uniteUnique(arr) {
    let times = 0;
    var unique = [[]];
    for (var i = 0; i < Array.prototype.slice.call(arguments).length; i++) {
        times = 0;
        for (var j = 0; j < arguments[i].length; j++) {
            for (var h = 0; h < unique.length; h++) {
                var pushArray = []
                if(unique[h][0] === arguments[i][j]) {
                    unique[h].push(arguments[i][j]) 
                    arguments[i].splice(j)
                } 
                else {
                    unique.push([arguments[i][j]])
                }
            }
        }
    }
   return unique
}

uniteUnique([1, 3, 2], [5, 2, 1, 4], [2, 1]);
?? 当想要的输出是:想要的输出是
[1,1,1],[2,2,2],[4],[3],[5]

我做错什么了吗

例如,我得到了多个
2
的数组(
[[2],[2],[2],[2]]
),即使我假设将所有
2
放在一个数组中



您可以使用哈希表并检查哈希键是否存在,如果不存在,则将空数组作为哈希值并将其推送到结果集

哈希表是一个对象(这里没有原型),它将值作为键,将数组作为值。哈希表的末尾保留数组中的所有值,如果找到新值,这些值将插入结果集中

{
    1: [1, 1, 1],
    2: [2, 2, 2],
    3: [3],
    4: [4],
    5: [5]
}
函数uniteUnique(){
var结果=[],
hash=Object.create(null);
Array.prototype.forEach.call(参数,函数(a){
a、 forEach(函数(b){
如果(!(散列中的b)){
散列[b]=[];
result.push(散列[b]);
}
hash[b].push(b);
});
});
返回结果;
}
log(uniteUnique([1,3,2],[5,2,1,4],[2,1])

。作为控制台包装{max height:100%!important;top:0;}
所需结果与给定的代码挑战不同。你想得到哪一个?我只是想按数组中的值对它们进行排序,这样我就知道它们有多少。我将把它们全部相加,并通过它们的起始数组的数量来确定它是唯一的值并且只存在于一个数组中,还是存在于所有数组中。需求中的一些示例表明了这一点。我刚刚编辑了我的帖子,因此它的另一种比较容易混淆的方法是
constflat=arr=>arr.reduce((a,b)=>a.concat(b),[]);const unique=arr=>[…新集合(arr)];const uniqueSet=arr=>unique(平坦(arr))ES5?这会输出多个数组,每个数组中的每个值都已排序吗?(e.x.在我的帖子的顶端)。我以后会需要它的。无意冒犯,但请重新阅读这篇文章。我刚才编辑了5到6次,以消除任何混乱,我不知道是否有什么东西对你来说没有意义,以防万一。输入不是2D数组<代码>单位单位单位单位([1,3,2],[5,2,1,4],[2,1])哈希表是如何工作的?我的原始代码有多远?我仍然不明白这是怎么回事,我不想使用我不懂的代码。哇,太酷了。它似乎也不太复杂。我会继续查的,还有桌子。这是什么意思!它是一个带and的运算符,用于检查给定的键是否在对象/数组中。哦,好的,
n3=!'Cat'
的意思与
n3!='Cat'
{
    1: [1, 1, 1],
    2: [2, 2, 2],
    3: [3],
    4: [4],
    5: [5]
}