function conditionalFlatten(arr, condition) {
return arr.reduce((acc, item) => {
if (Array.isArray(item) && condition(item)) {
return acc.concat(conditionalFlatten(item, condition));
} else if (Array.isArray(item)) {
return acc.concat(item);
} else {
return acc.concat(item);
}
}, []);
}
// 只扁平化包含数字的数组
const mixedArray = [1, [2, 3], ['a', 'b'], [4, [5, 6]]];
const result = conditionalFlatten(mixedArray, arr =>
arr.some(item => typeof item === 'number')
);
console.log(result);