javascript - 如何通过值的总和过滤对象数组
问题描述
if ( aTimesContacted > bTimesContacted ) {
return 1
}
if ( bTimesContacted > aTimesContacted ) {
return -1
}
return 0;
这是我正在使用的模拟数据集:
mock = [
{
data: {
person: {
contact: {
list: [
{
history: [{...}, {...}, {...}],
type: {}
}
{
history: [{...}],
type: {}
}
]
},
asdf: {...}
},
bleh: {...}
},
something: {...}
},
{...},
{...}
]
我正在尝试按每个父对象中的历史总长度过滤模拟数据。
这就是我的函数现在的样子:
function filterByContactAmount():void {
let sorted = data.sort((a:any, b:any) => {
let aTimesContacted:number = a.data.person.contact.list.reduce((acc:any, val:any) => acc + val.history.length, 0)
let bTimesContacted:number = b.data.person.contact.list.reduce((acc:any, val:any) => acc + val.history.length, 0)
return ( aTimesContacted > bTimesContacted ) ? a - b : b - a
})
setData(sorted)
}
我正确地获得了在我设置的变量中联系的次数(aTimesContacted
,bTimesContacted
),但是当我记录排序数组时,没有任何改变。
我在这里想念什么?
解决方案
推荐阅读
- javascript-automation - 如何使用 JXA 访问 UI 元素中的文本?
- c# - 是否可以使用自定义登录组件/页面配置 Blazor WebAssembly oidc
- python - .local 中的 Conda 包
- java - Mill Build Tool - 在不编译源代码的情况下安装依赖项
- c++ - #pragma omp parallel 仅使用 1 个线程
- python - 使用 selenium 在 Python 中抓取 Highcharts 时出错
- python - 数组的副本在函数中被覆盖
- python - 我如何预填充此更新表单
- sql - 用于查找最近数据并比较行的 SQL 查询
- neo4j - NEO4J - RHEL7 - 无法在空数据库上创建约束