javascript - 如何按值排序并仅返回高于特定值的项目?

标签 javascript vue.js ecmascript-6

我想对一个对象数组进行排序,排序方法中的项目通过一个函数使它们返回一个值,然后返回值高于某个数字的对象的项目。

我已经尝试过这个:

sortedObject(){
  return this.arrayOfObjects.sort((a, b) =>
    (this.formatValue(b) > 0.7) - (this.formatValue(a) > 0.7)
  )
}

this.formatValue 获取一个项目,并通过对象属性的一系列计算返回 0 到 1 之间的值。我希望排序仅返回值高于 0.7 的项目并将它们放入在 sortedObject 计算属性中排序。值低于 0.7 的项目不会包含在 sortedObject 中。

最佳答案

这不仅仅是排序,您需要首先过滤 < 0.7 的项目,然后对其余的进行排序:

我首先只映射计算值,然后过滤它们,然后对它们进行排序:

sortedObject(){
  return this.arrayOfObjects.map(a => this.formatValue(a))
                            .filter(a => a > 0.7)
                            .sort((a, b) => b - a)
}

编辑

sortedObject(){
  return this.arrayOfObjects.filter(a => this.formatValue(a) > 0.7)
                            .sort(
                              (a, b) =>
                                this.formatValue(b) - this.formatValue(a)
                            )
}

关于javascript - 如何按值排序并仅返回高于特定值的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54198487/

相关文章:

javascript - Angular 2 : access method of a class in template

javascript - 访问导出默认值之外的数据字段 - Vue

javascript - 用组件调用父方法

javascript - (Vue.js | Jest | Babel) 导入特定 vue 文件时出现意外标记

javascript - app.js 文件在被编辑后停止工作

javascript - 一些帮助解释 javascript 函数的信息

javascript - 嵌套 ng-repeat 中有几个单选按钮组,但只有最后一组显示值

javascript - 属性返回未定义

javascript - 使用 Javascript/jQuery 在 HTML 中列出 map 数据

node.js - 调试 es6 代理作为属性 -> 内部错误 : illegal access