LoDash : 객체 속성 배열에서 값 배열 가져 오기


161

LoDash 문서 내부에 있다고 확신하지만 올바른 조합을 찾지 못하는 것 같습니다.

var users = [{
      id: 12,
      name: Adam
   },{
      id: 14,
      name: Bob
   },{
      id: 16,
      name: Charlie
   },{
      id: 18,
      name: David
   }
]

// how do I get [12, 14, 16, 18]
var userIds = _.map(users, _.pick('id'));

답변:


321

버전 v4.x부터 다음을 사용해야합니다 _.map.

_.map(users, 'id'); // [12, 14, 16, 18]

이 방법은 작성하는 네이티브 Array.prototype.map 메소드에 해당합니다 (ES2015 구문).

users.map(user => user.id); // [12, 14, 16, 18]

v4.x 이전 _.pluck에는 같은 방식으로 사용할 수 있습니다 .

_.pluck(users, 'id'); // [12, 14, 16, 18]

감사합니다_.toArray(_.mapValues(users, 'id'))
YarGnawh

1
어떻게 id로 이름을 얻을 수 있습니까? 우리는 어떻게 두 개 이상의 값을 가져올 수 있습니까?
John

6
@John users.map(({ id, name }) => ({ id, name }))이하의 암호 users.map(user => ({ id: user.id, name: user.name })). lodash와 동일 : _.map(users, ({ id, name }) => ({ id, name })).
dfsq

@dfsq, 출력 배열에 객체를 추가하는 동안 좋은 솔루션입니다. 감사!
Ted Corleone

17

순수한 JS로 :

var userIds = users.map( function(obj) { return obj.id; } );

3
이를 var userIds = users.map (obj => obj.id)로 단순화 할 수 있습니다.
Kamil Naja

내 레벨에users.map(({id})=>id)
Artur Tagisow

15

새로운 lodash 릴리스에서 v4.0.0 _.pluck 은 제거되었습니다._.map

그런 다음 이것을 사용할 수 있습니다 :

_.map(users, 'id'); // [12, 14, 16, 18]

Github Changelog 에서 볼 수 있습니다


4

각 객체에서 여러 속성을 추출해야하는 경우

let newArr = _.map(arr, o => _.pick(o, ['name', 'surname', 'rate']));

2

ES6를 통한 간단하고 빠른 방법

let newArray = users.flatMap(i => i.ID) // -> [ 12, 13, 14, 15 ]

-2

네이티브 자바 스크립트를 사용하는 경우이 코드를 사용할 수 있습니다-

let ids = users.map(function(obj, index) {

    return obj.id;
})

console.log(ids); //[12, 14, 16, 18]

OP는 명시 적으로 Lodash 솔루션을 요청했습니다.
아리엘 와인 버거

-17

팝업에서 원하는 것을 제공합니다.

for(var i = 0; i < users.Count; i++){
   alert(users[i].id);  
}

2
한 번에 한 요소 씩 배열을 반복합니다. 배열은 일부 데이터 유형 (이 예에서는 객체 임)의 값을 갖는 인덱스의 데이터 구조입니다. 배열의 인덱스에있는 요소를 평가해야만 개체에 액세스 할 수 있습니다. 루프는 이것을 달성하는 구조입니다.
user1789573
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.