1. 程式人生 > 其它 >關於扁平化陣列的吐槽

關於扁平化陣列的吐槽

一個部門JSON資料中,屬性名是部門id,屬性值是個部門成員id陣列集合,現在要把有部門的成員id都提取到一個數組集合中。

const deps = {
'採購部':[1,2,3],
'人事部':[5,8,12],
'行政部':[5,14,79],
'運輸部':[3,64,105],
}
let member = [];
for (let item in deps){
const value = deps[item];
if(Array.isArray(value)){
member = [...member,...value]
}
}
member = [...new Set(member)]

吐槽

獲取物件的全部屬性值還要遍歷嗎?Object.values忘記了嗎?還有涉及到陣列的扁平化處理,為啥不用ES6提供的flat方法呢,還好這次的陣列的深度最多隻到2維,還要是遇到4維、5維深度的陣列,是不是得迴圈巢狀迴圈來扁平化?

const deps = {
    '採購部':[1,2,3],
    '人事部':[5,8,12],
    '行政部':[5,14,79],
    '運輸部':[3,64,105],
}
let member = Object.values(deps).flat(Infinity);

其中使用Infinity作為flat的引數,使得無需知道被扁平化的陣列的維度。

補充

flat方法不支援IE瀏覽器。


來源:稀土掘金