Flatten Array/Object
for of 很好用,記得常用 for(const [key, value] of Object.entries(obj))
Flatten one level array
/**
* @param {number[]} arr
* @return {number[]}
*/
var flatten = function(arr) {}Example 1:
Input: [1, 2, [5, 6]]
Output: [1, 2, 5, 6]Solution 1
若是純數字就放進新 Array,若不是則在做一次
var flatten = function(arr) {
let newArr = [];
convert(arr);
function convert(lists) {
lists.forEach(list => {
if( !Array.isArray(list) ){
newArr.push(list)
} else{
convert(list);
}
})
}
return newArr;
}
console.log(flatten([1, 2, [5, 6, [7, 8]]]))Solution 2
比較簡潔的做法,使用 reduce. previous 被我初始化會是 []
Flatten multiple level array
Flatten object
其實跟 Array 大同小異,只差在 key 的部分
DOM

Last updated
Was this helpful?