let arr1 = '[[11],[12],[13],[12,1201],[13,1304],[13,1305]]'
处理成[11,1201,1304,1305]
let arr1 = '[[11],[12],[13],[12,1201],[13,1304],[13,1305]]'
处理成[11,1201,1304,1305]
getnum(){
return new Set(this.arr1.join(',').split(',').filter(v=>v!=12&&v!=13).map(item=>+item))
},
let arr1 = '[[11],[12],[13],[12,1201],[13,1304],[13,1305]]'
let result = Array.from(new Set(JSON.parse(arr1).flat()))
const arr1 = "[[11],[12],[13],[12,1201],[13,1304],[13,1305]]";
function handle(list) {
// 外层数组可看作一个元组的数组,每个元组有 1~2 个元素
// 按元组的第 1 个元素分组
const map = list.reduce((group, [first, second]) => {
const arr = group.get(first) ?? (group.set(first, []) && group.get(first));
if (second !== undefined) { arr.push(second); }
return group;
}, new Map());
// 分组后得到一个 Map 对象,取 entry 列表。entry 的值是一个数组,且可能为空(空数组)。
// 当 entry 的值是空的时候取键,否则取值,结果是键/值混排的一个数组
// 对这个数组进行一层展开即得答案(这两步可合并成 flatMap)
return [...map.entries()]
.flatMap(([key, value]) => value.length ? value : key);
// 如果直接展开可能产生重复值(目前从题目上来看是不会产生重复的)
// 可以使用 Set 来去个重
}
const result = handle(JSON.parse(arr1));
console.log(result);
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
1 回答3.4k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
方法一:
方法二:先降维,然后去重,最后筛选掉12和13