Javascript에서 사전 이해 또는 객체 'map'
자바스크립트의 목록에서 몇 개의 객체를 생성해야 합니다.Python에서 저는 다음과 같이 쓰고 싶습니다.
{key_maker(x): val_maker(x) for x in a_list}
다른 질문 방법은 다음과 같은 것이 존재하는지 여부입니다.jQuery.map()
어떤 것이 객체를 통합합니까?제 추측은 이렇습니다(효과 없음).
var result = {}
$.map(a_list, function(x) {
$.extend(result, {key_maker(x): val_maker(x)})
})
축소를 사용하지 않는 버전은 다음과 같습니다.
Object.fromEntries( a_list.map( x => [key_maker(x), value_maker(x)]) );
Object.fromEntries는 기본적으로 Lodash에 있는 Pairs의 _.와 동일합니다.이것은 저에게 파이썬 딕트 이해와 가장 유사하게 느껴집니다.
가정하면a_list
배열입니다. 가장 가까운 것은 아마도 사용하는 것일 것입니다..reduce()
.
var result = a_list.reduce(function(obj, x) {
obj[key_maker(x)] = val_maker(x);
return obj;
}, {});
향후 버전의 JavaScript에서는 어레이를 이해할 수 있을 것입니다.
MDN의 호환성 패치를 사용하여 ES5와 호환되지 않는 구현을 패치할 수 있습니다.
한다면a_list
배열이 아니라 일반 개체입니다.Object.keys()
동일한 작업을 수행합니다.
var result = Object.keys(a_list).reduce(function(obj, x) {
obj[key_maker(a_list[x])] = val_maker(a_list[x]);
return obj;
}, {});
오래된 질문이지만 새로운 버전의 Javascript에서 답변이 약간 변경되었습니다.ES2015(ES6)를 사용하면 다음과 같이 한 줄로 객체를 이해할 수 있습니다.
a_list.reduce((obj, x) => Object.assign(obj, { [key_maker(x)]: value_maker(x) }), {})
ES5 도입Map
명령된 칙령 때문에.지도 이해도는 다음과 같습니다.
Map( Array.map(function(o){return[ key_maker(o), val_maker(o) ]}))
예:
> a_list = [ {x:1}, {x:2}, {x:3} ]
< [ Object, Object, Object ]
>
> let dict = new Map(a_list.map(function(o){return[ o.x, o.x**2 ]}))
< Map[3]
< 0 : {1 => 1}
< 1 : {2 => 4}
< 2 : {3 => 9}
>
> dict.get(2)
< 4
아마도 Lodash를 사용하여 다음과 같은 것이 있을 것입니다. var result = _.fromPairs(a_list.map(x => [key_maker(x), value_maker(x)]));
짧은 ES6 버전은 다음과 같습니다.
a_list.reduce((obj, x) => (obj[key_maker(x)] = val_maker(x), obj),{})
최신 버전의 유형 스크립트를 사용하고 있습니다.
const list = [1, 2, 3, ...];
const obj = Object.fromEntries(array.map(val, idx) => [func1(val), func2(val)]))
// python equivalent: {func1(x): func2(x) for x in a_list}
언급URL : https://stackoverflow.com/questions/11068247/in-javascript-a-dictionary-comprehension-or-an-object-map
'source' 카테고리의 다른 글
판다 및 매트플로트립을 사용하여 범주형 데이터 표시 (0) | 2023.08.24 |
---|---|
oracle: from 절에 별칭을 할당할 수 있습니까? (0) | 2023.08.24 |
핀을 터치하지 않고 MKnotationView의 콜아웃 뷰를 트리거하는 방법은 무엇입니까? (0) | 2023.08.24 |
쿼리를 콘솔 대신 추적 또는 디버그로 출력하도록 Fluent NHibernate를 구성하는 방법은 무엇입니까? (0) | 2023.08.24 |
텍스트 너비 계산 (0) | 2023.08.24 |