關於扁平化陣列的吐槽
阿新 • • 發佈:2021-10-27
一個部門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瀏覽器。
來源:稀土掘金