#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])}})