簡體   English   中英

如何重構為高階function?

[英]How to refactor to a higher order function?

如何將這個function重構為更高階的function?

它旨在返回一個新數組,其中包含包含值“Rambo”的字符子數組。

function isRamboCharacter(characters) {

 const x = [];

  for (let i = 0; i < characters.length; i++) {
    if (characters[i].movie.includes('Rambo')) {
      x.push(characters[i]);
    }
  }

return x;
}

我試過了:

return characters.movie.includes('Rambo');

解決方案

 const characters = [ { movie: ["Rambo", "Rockey", "Avengers"] }, { movie: ["Fatherhood", "Rockey", "Avengers"] } ] const isRamboCharacter = (characters) => characters.filter((char) => char.movie.includes("Rambo")) console.log(isRamboCharacter(characters));

或者直接調用 Array 的 filter 方法

console.log(characters.filter((char) => char.movie.includes("Rambo")));

//output - [ { movie: [ 'Rambo', 'Rockey', 'Avengers' ] } ]

你可以咖喱它(在函數中返回 function)

function isCharacterInMovie(movie) {
  return function filterFunction(characters) {
    const x = [];
    for (let i = 0; i < characters.length; i++) {
      if (characters[i].movie.includes(movie)) {
        x.push(characters[i]);
      }
    }
    return x;
  }
}
const isRamboInMovie = isCharacterInMovie('rambo') // returns the inner function which holds on to the value from when you called it
 isRamboInMovie(charactersInTheMatrix); // []
 isRamboInMovie(charactersInRambo); // ['rambo']

“你不了解 JS”系列叢書有一本關於此的好書(簡短且免費),它解釋得非常好你還不了解 JS:Scope & Closures - 第 2 版

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM