问题也可以描述为:将多个有序数组合并为一个有序数组?比如将[[1,2],[0,3,5],[-1,4]]合并出一个[-1, 0, 1, 2, 3, 4, 5],如果不考虑去重怎么写?考虑去重又怎么写?
1 回答
富国沪深
TA贡献1790条经验 获得超9个赞
不考虑去重
var arr = [[1, 2], [0, 3, 5], [-1, 4]]; arr = arr .reduce((a, b) => a.concat(b), []) .sort((a, b) => a - b); // 如果需要从小到大排序加上这个 console.log(arr);
结果:
考虑去重
思路是使用对象的键名来缓存数字,然后用Object.keys取所有键名(利用了对象键名唯一性)
var arr = [[1, 2], [0, 3, 5], [-1, 4]];
var obj = {};
arr = arr
.forEach(item => item.forEach(function(num) {
obj[num] = true;
}));
arr = Object
.keys(obj)
.map(num => +num) // 这行主要是将键名取出来之后,数组中全部是字符串,将其都转成数字,以便后面排序
.sort((a, b) => a - b);
console.log(arr);
结果:
添加回答
举报
0/150
提交
取消