javascript - 在 JavaScript 数组中查找最接近的对象匹配
问题描述
我有一组未排序的对象:
const participants = [
{code: '222222', is_winner: true},
{code: '444444', is_winner: false},
{code: '777777', is_winner: false},
{code: '555555', is_winner: true},
{code: '666666', is_winner: false},
{code: '111111', is_winner: false},
{code: '333333', is_winner: false},
];
我如何找到最近的对象,is_winner 键为真,给定参与者,is_winner 键始终为假。
if participant = {code: '333333', is_winner: false}
=>
Should return {code: '555555', is_winner: true}
if participant = {code: '444444', is_winner: false}
=>
Should return {code: '222222', is_winner: true}
我正在寻找最接近非获胜者的获胜者(is_winner 为真)。该阵列是非圆形的。
解决方案
这可以简单地是:
const data = [ {code: '222222', is_winner: true}, {code: '444444', is_winner: false}, {code: '777777', is_winner: false}, {code: '555555', is_winner: true}, {code: '666666', is_winner: false}, {code: '111111', is_winner: false}, {code: '333333', is_winner: false}, ];
let fn = (c, arr) => {
let i = arr.findIndex(x => x.code === c)
return data.slice(0, i).reverse().find(x => x.is_winner)
}
console.log(fn('333333', data)) // 555555
console.log(fn('444444', data)) // 222222
我们的想法是index
使用提供的项目获取项目,code
然后对主数组进行切片,这样你就只有项目到该索引。然后简单地反转结果并获得第一场比赛is_winner
。
推荐阅读
- python - 调用 tabulate TypeError: 'tuple' object is not callable 后出现此错误
- angular - 在属性中存储来自 Angular 订阅的数据
- c# - 为什么可以将 Windows 特定的 Nugets 添加到 ASP.NET Core
- javascript - 将我的 if 条件转换为使用正则表达式选项切换大小写:javascript
- html - 当我使用
,内容消失(菜单和路由器出口) - postgresql - PostgreSQL 在部分索引中使用时间戳差异进行 upsert
- javascript - JSDoc 不显示参数表和返回值/名称/描述
- python - 使用其他行中的非唯一值从 Dataframe 行中提取值
- sql-server - XML 同名但属性不同的多个节点 SQL
- powershell - 具有多个潜在凭据的 PowerShell Connect-VIServer