【问题标题】:Filter an Object and Return Key in Typescript在 Typescript 中过滤对象并返回键
【发布时间】:2022-01-06 06:14:25
【问题描述】:
我有一个要过滤的对象,它应该返回一个具有特定 ID 的键。 ID 是唯一的。需要一个有效的逻辑来返回这个预期的输出。要过滤的对象。
{
"a":[{"id":"1123","value":"test1"}],
"b":[{"id":"1124","value":"test2"}],
"c":[{"id":"1125","value":"test3"}]
}
输入 ID:“1124”
Expected Output : 'b'
【问题讨论】:
标签:
javascript
arrays
typescript
data-structures
ecmascript-6
【解决方案1】:
let data = {
"a":[{"id":"1123","value":"test1"}],
"b":[{"id":"1124","value":"test2"}],
"c":[{"id":"1125","value":"test3"}]
};
let input = "1124";
let result = Object.entries(data).filter(([k,v]) => v[0].id === input)[0][0];
console.log(result);
【解决方案2】:
这里的效率:
- 一发现东西就打破循环
- 对具有 id 的对象不感兴趣,只检查那里的东西是否具有该 id
o = {
"a":[{"id":"1123","value":"test1"}],
"b":[{"id":"1124","value":"test2"}],
"c":[{"id":"1125","value":"test3"}]
}
for (key in o) {
if (o[key].some(x => x.id === '1124')) {
console.log(key);
break;
}
}
【解决方案3】:
const input = "1124"
const obj = {
"a":[{"id":"1123","value":"test1"}],
"b":[{"id":"1124","value":"test2"}],
"c":[{"id":"1125","value":"test3"}]
}
Object.values(obj).filter((ob, i)=>{if(ob[0].id === input){console.log(Object.keys(obj)[i])}})