Как писать функциональный код на Js

Как мы функционально пишем код внутри Javascript?

Сначала я сделал что-то вроде этого

render ()  {

    if (!this.props.mainListFetching && !this.props.mainListError) {
      let testData = this.sortAmountPledgingMaximumOrMinimum(this.props.mainList, "maximum")
      console.info(testData) //Coming out to be undefined
        this.sortTypeTownOrCountry(this.props.mainList)
        this.sortPercentHighestOrLeast(this.props.mainList)

    }

это вызывает следующую функцию

 sortPercentHighestOrLeast = (data, type) => {
       data.sort((a, b) => {
           if (type == "maximum") {
            return (
                a["percentage.funded"] - b["percentage.funded"]
            )
        } else {
            return (
                b["percentage.funded"] - a["percentage.funded"]
            )
        }
     }) 
     console.info(data)
     return data
}

Я ожидал, что результат вышеупомянутой функции будет сохранен в моей переменной testData, но когда я использую console.info, он оказывается неопределенным.

Мой console.info(data) выводит результат в консоль, который подтверждает, что функция выполняется, а данные не определены?

[Обновлять:] Я тоже пробовал это (поскольку Js асинхронный)

 let testData =  this.sortAmountPledgingMaximumOrMinimum(this.props.mainList, "maximum", (data) => {
            console.info("anything") //Doesn't log anything
          })

🤔 А знаете ли вы, что...
JavaScript поддерживает работу с графикой и аудио, что позволяет создавать мультимедийные веб-приложения.


2
65
1

Ответ:

Решено

Предполагая, что funded является вложенным свойством percentage, вы можете переместить проверку условия на шаг вперед, поскольку вы проверяете каждую итерацию сортировки.

sortPercentHighestOrLeast = (data, type) => data.sort(type => type === "maximum"
    ? (a, b) => a.percentage.funded - b.percentage.funded
    : (a, b) => b.percentage.funded - a.percentage.funded
);