二维数组
如何让他变成->第二行
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);
}
```