为了账号安全,请及时绑定邮箱和手机立即绑定

javascript怎么将一个由多个有序数组组成的数组合并为一个有序数组?

javascript怎么将一个由多个有序数组组成的数组合并为一个有序数组?

慕哥9229398 2018-12-18 17:15:11
问题也可以描述为:将多个有序数组合并为一个有序数组?比如将[[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);

结果:

https://img1.sycdn.imooc.com//5c2dcc6d00015bae03390095.jpg

考虑去重

思路是使用对象的键名来缓存数字,然后用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);

结果:

https://img1.sycdn.imooc.com//5c2dcc810001723005880187.jpg

查看完整回答
反对 回复 2019-01-03
  • 1 回答
  • 0 关注
  • 1375 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信