从 Reduce 方法合并嵌套数组
Merging Nested Arrays from Reduce Method
提示:创建一个接受数组和回调的函数优先级。回调将 return 为 true 或 false。 priority 将遍历数组并对每个元素执行回调,return 一个新数组,其中所有产生 return 值为 true 的元素在数组中排在第一位,其余的元素排在第二位。
代码:
function prioritize(array, callback) {
return array.reduce((accum, item) => {
if (callback(item)) {
accum[0].push(item)
} else {
accum[1].push(item)
}
return accum;
}, [[], []])
}
// Uncomment these to check your work!
function startsWithS(str) { return str[0].toLowerCase() === 's'; } //boolean, should be true or false
const tvShows = ['curb', 'rickandmorty', 'seinfeld', 'sunny', 'friends'] // array
console.log(prioritize(tvShows, startsWithS)); // should log: ['seinfeld', 'sunny', 'curb', 'rickandmorty', 'friends']
我无法弄清楚如何合并 'accum' return 的嵌套数组以获得输出 return ['seinfeld', 'sunny' , 'curb', 'rickandmorty', 'friends']。关于如何解决这个问题的任何提示?
您只需flatten返回的结果:
function prioritize(array, callback) {
return array.reduce((accum, item) => {
if (callback(item)) {
accum[0].push(item)
} else {
accum[1].push(item)
}
return accum;
}, [[], []]).flat();
}
// Uncomment these to check your work!
function startsWithS(str) { return str[0].toLowerCase() === 's'; } //boolean, should be true or false
const tvShows = ['curb', 'rickandmorty', 'seinfeld', 'sunny', 'friends'] // array
console.log(prioritize(tvShows, startsWithS)); // should log: ['seinfeld', 'sunny', 'curb', 'rickandmorty', 'friends']
提示:创建一个接受数组和回调的函数优先级。回调将 return 为 true 或 false。 priority 将遍历数组并对每个元素执行回调,return 一个新数组,其中所有产生 return 值为 true 的元素在数组中排在第一位,其余的元素排在第二位。
代码:
function prioritize(array, callback) {
return array.reduce((accum, item) => {
if (callback(item)) {
accum[0].push(item)
} else {
accum[1].push(item)
}
return accum;
}, [[], []])
}
// Uncomment these to check your work!
function startsWithS(str) { return str[0].toLowerCase() === 's'; } //boolean, should be true or false
const tvShows = ['curb', 'rickandmorty', 'seinfeld', 'sunny', 'friends'] // array
console.log(prioritize(tvShows, startsWithS)); // should log: ['seinfeld', 'sunny', 'curb', 'rickandmorty', 'friends']
我无法弄清楚如何合并 'accum' return 的嵌套数组以获得输出 return ['seinfeld', 'sunny' , 'curb', 'rickandmorty', 'friends']。关于如何解决这个问题的任何提示?
您只需flatten返回的结果:
function prioritize(array, callback) {
return array.reduce((accum, item) => {
if (callback(item)) {
accum[0].push(item)
} else {
accum[1].push(item)
}
return accum;
}, [[], []]).flat();
}
// Uncomment these to check your work!
function startsWithS(str) { return str[0].toLowerCase() === 's'; } //boolean, should be true or false
const tvShows = ['curb', 'rickandmorty', 'seinfeld', 'sunny', 'friends'] // array
console.log(prioritize(tvShows, startsWithS)); // should log: ['seinfeld', 'sunny', 'curb', 'rickandmorty', 'friends']