Отфильтруйте объект и верните ключ в Typescript

#javascript #arrays #typescript #data-structures #ecmascript-6

Вопрос:

У меня есть объект для фильтрации, и он должен возвращать ключ с определенным идентификатором. Идентификатор уникален . Нужна эффективная логика, чтобы вернуть этот ожидаемый результат.Объект, подлежащий фильтрации.

 {  "a":[{"id":"1123","value":"test1"}],  "b":[{"id":"1124","value":"test2"}],  "c":[{"id":"1125","value":"test3"}]   }  

Входной идентификатор: «1124»

 Expected Output : 'b'  

Комментарии:

1. За исключением петли, я не понимаю, как мы можем это сделать

2. Да, мы можем сделать петлю . В поисках эффективного решения

Ответ №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]) =gt; v[0].id === input)[0][0]; console.log(result); 

Комментарии:

1. Большое Спасибо. это решение полезно 🙂

Ответ №2:

Эффективность здесь:

  • разорвите петлю, как только что-то будет найдено
  • не интересует объект, у которого есть идентификатор, только проверка того, что у чего-то там есть этот идентификатор
 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 =gt; 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)=gt;{if(ob[0].id === input){console.log(Object.keys(obj)[i])}})