1 回答

TA貢獻1982條經驗 獲得超2個贊
問題是,當迭代外部數組時,條件
Array.isArray(currVal)
滿足,所以
accumArr.concat(currVal.map(childrenSelector))
運行 whencurrVal是一個數字數組。但是數字沒有.slice方法。
相反,呼叫childrenSelector上currVal,沒有.map(使得陣列切片):
function flattenArray(arr, childrenSelector) {
return arr.reduce((accumArr, currVal) => {
return accumArr.concat(childrenSelector(currVal));
}, []);
}
console.log(
flattenArray([
[11, 12, 13, 14, 15],
[21, 22, , 23, 24, 25],
[31, 32, 34, 35]
], x => x.slice(0, 2))
);
您還可以使用flatMap:
const flattenArray = (arr, childrenSelector) => arr.flatMap(childrenSelector);
console.log(
flattenArray([
[11, 12, 13, 14, 15],
[21, 22, , 23, 24, 25],
[31, 32, 34, 35]
], x => x.slice(0, 2))
);
添加回答
舉報