二维数组如何重新分组一下

二维数组

如何让他变成->第二行

const  str = [[1,2],[1,3],[1,4],[5,6],[5,7],[5,8] ]
const  str = [[1,2,3,4],[5,6,7,8]]

    const  str = [[1,2],[1,3],[1,4],[5,6],[5,7],[5,8] ]
    const  str2 = [[1,2,3,4],[5,6,7,8]]
    const arr1 = str.flat(Infinity); //使用flat把数组打平为:[1, 2, 1, 3, 1, 4, 5, 6, 5, 7, 5, 8]
    const arr2 = [...new Set(arr1)] //去重
    const firstArray = []; //里面放1,2,3,4
    const lastArray = []; //里面放5,6,7,8
    arr2.forEach(item =>{
        if(item < 5) {
            firstArray.push(item)
        } else {
            lastArray.push(item)
        }
    });
    const arr3 = [firstArray,lastArray]
    console.log(arr3);

const str = [[1,2],[1,3],[1,4],[5,6],[5,7],[5,8],[6,1],[6,2] ]
let o = Array.from(new Set( str.map((x) => x[0])))
let str2 = []
o.forEach((x)=>{
let s = [x].concat(str.filter((y) => y[0] === x).reduce((a,b) => a.concat(b)).filter((z) => z !== x))
str2.push(s)
})
console.log(str2);
// [ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 6, 1, 2 ] ]

我不太清楚你的转换规则是什么,我揣测你的想法是按子数组的第一个元素分组的,比如第一个元素为1的为一组,第一个元素为5的为另一组。
这里我用了java8的lambda表达式帮你实现了一下:

int[][] arr = {{1,2},{1,3},{1,4},{5,6},{5,7},{5,8}};
        // 先分组
        Map<Integer, List<int[]>> map = Arrays.asList(arr).stream().collect(Collectors.groupingBy(e -> e[0]));
        // 再聚合
        List<List<Integer>> res = map.entrySet().stream().map(e -> {
            List<Integer> list = new ArrayList<>();
            list.add(e.getKey());
            e.getValue().forEach(a -> {
                for (int i = 1; i < a.length; i++) {
                    list.add(a[i]);
                }
            });
            return list;
        }).collect(Collectors.toList());
        System.out.println(res);

输出结果:

[[1, 2, 3, 4], [5, 6, 7, 8]]

如有用请点一下采纳。


这是我用的方法,感觉太啰嗦了
```java
JSONArray array = JSONArray.parseArray(dto.getCheckScopeArr());
        JSONArray newArr = new JSONArray();
        for (Object obj : array){
            JSONArray arr = JSONArray.parseArray(JSON.toJSONString(obj));
            boolean flag = false;
            for (Object o : newArr){
                JSONArray arr2 = JSONArray.parseArray(JSON.toJSONString(o));
                if (arr2.contains(arr.get(0))){
                    flag = true;
                    break;
                }
            }
            if (flag){
                continue;
            }
            JSONArray newArray = new JSONArray();

            for (Object o : array){
                JSONArray arr2 = JSONArray.parseArray(JSON.toJSONString(o));
                if (arr.containsAll(arr2)){
                    continue;
                }

                if (arr2.get(0).equals(arr.get(0))){
                    if (newArray.size() == 0){
                        newArray.addAll(arr);
                    }
                    newArray.add(arr2.get(1));
                }
            }
            newArr.add(newArray);
        }

```