【问题标题】: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])}})

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-06
      • 2020-11-01
      • 2018-07-31
      • 2011-03-06
      • 2022-01-21
      • 2021-02-26
      相关资源
      最近更新 更多