【问题标题】:Merging Nested Arrays from Reduce Method从 Reduce 方法合并嵌套数组
【发布时间】:2022-01-18 05:29:32
【问题描述】:

提示:创建一个接受数组和回调的函数优先级。回调将返回 true 或 false。 priority 将遍历数组并对每个元素执行回调,并返回一个新数组,其中所有返回值为 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' 返回的嵌套数组以使输出返回 ['seinfeld'、'sunny'、'curb'、'rickandmorty'、'friends']。有关如何解决此问题的任何提示?

【问题讨论】:

    标签: javascript arrays reduce


    【解决方案1】:

    你只需要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']

    【讨论】:

      猜你喜欢
      • 2019-05-26
      • 1970-01-01
      • 2021-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-16
      • 1970-01-01
      相关资源
      最近更新 更多