lodash를 사용하여 객체를 배열로 변환 obj = {

lodash로 어떻게 큰 object것을 array바꿀 수 있습니까?

var obj = {
  22: {name:"John", id:22, friends:[5,31,55], works:{books:[], films:[],}
  12: {name:"Ivan", id:12, friends:[2,44,12], works:{books:[], films:[],}
}

// transform to 
var arr = [{name:"John", id:22...},{name:"Ivan", id:12...}]



답변

넌 할 수있어

var arr = _.values(obj);

설명서는 여기를 참조 하십시오.


답변

_.toArray(obj);

다음과 같이 출력됩니다 :

[
  {
    "name": "Ivan",
    "id": 12,
    "friends": [
      2,
      44,
      12
    ],
    "works": {
      "books": [],
      "films": []
    }
  },
  {
    "name": "John",
    "id": 22,
    "friends": [
      5,
      31,
      55
    ],
    "works": {
      "books": [],
      "films": []
    }
  }
]"


답변

누군가 관심이 있다면 현대적인 기본 솔루션 :

const arr = Object.keys(obj).map(key => ({ key, value: obj[key] }));

또는 (IE가 아님) :

const arr = Object.entries(obj).map(([key, value]) => ({ key, value }));


답변

나를 위해, 이것은 효과가 있었다 :

_.map(_.toPairs(data), d => _.fromPairs([d]));

돌아서 다

{"a":"b", "c":"d", "e":"f"} 

으로

[{"a":"b"}, {"c":"d"}, {"e":"f"}]


답변

결과를 얻는 데는 몇 가지 방법이 있습니다. 카테고리로 분류하자 :

ES6 값만 :

이에 대한 주요 방법은 Object.values 입니다. 그러나 Object.keysArray.map 을 사용 하면 예상 결과를 얻을 수 있습니다.

Object.values(obj)
Object.keys(obj).map(k => obj[k])

ES6 키 및 가치 :

map 및 ES6 동적 / 계산 된 속성을 사용하고 파괴 하면 키를 유지하고 맵에서 객체를 반환 할 수 있습니다.

Object.keys(obj).map(k => ({[k]: obj[k]}))
Object.entries(obj).map(([k,v]) => ({[k]:v}))

Lodash 값만 :

_.values그러나 이를 위해 설계된 방법 은 “바로 가기”와 같은 _.map유틸리티 방법과 객체 의 값만_.toArray 포함하는 배열을 반환하는 유틸리티 방법 이 있습니다 . 당신은 할 수도 불구 하고 사용하여 개체의 값을 가져 표기합니다._.map_.keysobj[key]

참고 : _.map객체가 전달되면 baseMap기본적으로 forEach객체 속성에있는 핸들러를 사용 합니다.

_.values(obj)
_.map(obj)
_.toArray(obj)
_.map(_.keys(obj), k => obj[k])

Lodash 키 및 가치 :

// Outputs an array with [[KEY, VALUE]]
_.entries(obj)
_.toPairs(obj)

// Outputs array with objects containing the keys and values
_.map(_.entries(obj), ([k,v]) => ({[k]:v}))
_.map(_.keys(obj), k => ({[k]: obj[k]}))
_.transform(obj, (r,c,k) => r.push({[k]:c}), [])
_.reduce(obj, (r,c,k) => (r.push({[k]:c}), r), [])

위의 예에서는 ES6이 사용됩니다 (화살표 기능 및 동적 속성). _.fromPairsES6이 문제인 경우 lodash 및 기타 방법을 사용 하여 객체를 작성할 수 있습니다 .


답변

키 (이 경우 ID)를 각 배열 항목의 속성으로 유지하려면 다음을 수행하십시오.

const arr = _(obj) //wrap object so that you can chain lodash methods
            .mapValues((value, id)=>_.merge({}, value, {id})) //attach id to object
            .values() //get the values of the result
            .value() //unwrap array of objects


답변

2017 업데이트 : Object.values , lodash toArray 가 수행합니다. 그리고 키 을 유지 하고 연산자를 멋지게 퍼 뜨리 려면 :

// import { toArray, map } from 'lodash'
const map = _.map

const input = {
  key: {
    value: 'value'
  }
}

const output = map(input, (value, key) => ({
  key,
  ...value
}))

console.log(output)
// >> [{key: 'key', value: 'value'}])
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>