亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 1393 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號