【发布时间】:2023-03-31 17:06:01
【问题描述】:
我需要通过以下方式在数组中找到一个对象:
- 获取第一个有效对象
- 如果没有有效对象,返回最大版本的对象
对象的接口:
interface Data {
version: number;
valid: boolean;
}
样本数据:
const data = [{version: 1, valid: false}, {version: 2, valid: false}, {version: 3, valid: false}];
// return {version: 3, valid: false} because there is no valid object and the greatest version is 3
const data2 = [{version: 1, valid: false}, {version: 2, valid: true}, {version: 3, valid: true}];
// return {version: 2, valid: true} because this is the first valid object
如果我过滤数组,它仅适用于第二个样本,因为我无法再次循环数组以获得最大版本:
data.find(d => d.valid); // undefined
data2.find(d => d.valid); // {version: 2, valid: true}
游乐场:
const data = [{version: 1, valid: false}, {version: 2, valid: false}, {version: 3, valid: false}];
const data2 = [{version: 1, valid: false}, {version: 2, valid: true}, {version: 3, valid: true}];
console.log(data.find(d => d.valid));
console.log(data2.find(d => d.valid));
【问题讨论】:
标签: javascript arrays algorithm