sort
функция возвращает массив той же длины, что и исходный массив. Таким образом, вы не можете сделать это за один звонок. Вам нужно filter
, как это, прежде чем звонить sort
.
sortedObject() {
return this.arrayOfObjects
.filter(a => this.formatValue(a) > 0.7)
.sort((a, b) => this.formatValue(b) - this.formatValue(a))
}
Если formatValue()
- дорогостоящая операция, и вы хотите вызывать ее только один раз для объекта, тогда вы можете map
передать ее в новый массив, прежде чем выполнить filter
. Но это возвращает массив объектов с дополнительным свойством formatValue
sortedObject() {
return this.arrayOfObjects
.map(a => ({ formatValue: this.formatValue(a), ...a}))
.filter(a => a.formatValue > 0.7)
.sort((a, b) => b.formatValue - a.formatValue)
}
Другой вариант - использовать свойство getter
внутри каждого объекта и вызывать в нем функцию formatValue()
.